Avatar billede ugologic Nybegynder
20. januar 2009 - 15:17 Der er 8 kommentarer og
1 løsning

Count og inner join?

Hej

Jeg har 2 tabeller.

users
-id
-name

signups
-id
-user_id
-raid_id
-queued
-cancelled

Jeg skal bruge en sql sætning der kan vise en liste over users og antallet af queued signups og antallet af cancelled signups.
Avatar billede ugologic Nybegynder
20. januar 2009 - 15:20 #1
Glemte at forklare.

Hvis man er queued så står der 1 i feltet.
Hvis man er cancelled så står der 1 i feltet.
Avatar billede arne_v Ekspert
21. januar 2009 - 02:12 #2
SELECT name,COUNT(queued),COUNT(cancelled)
FROM users JOIN signups ON users.id=signups.user_id
GROUP BY name

vil tælle antal rækker i signups hvor henholdsvis queued og cancelled er forskellig fra NULL.
Avatar billede arne_v Ekspert
21. januar 2009 - 02:13 #3
SELECT name,SUM(queued),SUM(cancelled)
FROM users JOIN signups ON users.id=signups.user_id
GROUP BY name

vil tælle antal rækker i signups hvor henholdsvis queued og cancelled er 1 forudsat
at de ellers er 0.
Avatar billede ugologic Nybegynder
21. januar 2009 - 13:52 #4
Nice.

Hvis en user bliver sat på hold så bliver 1 i queued sat til 0.

Hvis den er 0 i både og queued og cancelled så er user på hold.

Kan man lave en ekstra række der viser at user var på hold hvis denne er i signups tabellen, men både queued og cancelled står til 0?
Avatar billede ugologic Nybegynder
22. januar 2009 - 10:32 #5
Arne: smid et svar.

Dine sætninger virker fint, men jeg har besluttet mig for at lave det på en anden måde.
Avatar billede arne_v Ekspert
23. januar 2009 - 00:40 #6
OK
Avatar billede arne_v Ekspert
23. januar 2009 - 00:41 #7
Dit sidste spørgsmål forstod jeg aldrig.
Avatar billede ugologic Nybegynder
23. januar 2009 - 16:05 #8
Når en bruger signer op (queue) eller melder fra (cancel) så bliver de respektive felter sat til 1.

Hvis en bruger der er signed op bliver sat på hold så bliver queue sat til 0.

Så hvis en bruger har 0 i begge, men findes i tabellen så er denne sat på hold.

Men som skrevet har jeg fundet en anden løsning i stedet.
Avatar billede arne_v Ekspert
24. januar 2009 - 04:55 #9
SELECT *
FROM users
WHERE id IN (SELECT user_id FROM signups WHERE queue=0 AND cancel=0)

vil jeg tro
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester