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.
Annonceindlæg fra Conscia
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.
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.
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.
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?
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.
23. januar 2009 - 00:40
#6
OK
23. januar 2009 - 00:41
#7
Dit sidste spørgsmål forstod jeg aldrig.
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.
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
Computerworld tilbyder specialiserede kurser i database-management