Permalänk
Medlem

SQL Join

Hej!

Behöver lite hjälp med en query. Får det inte att funka som jag vill. Så här ser den ut.

$r = mysql_query("SELECT u.*, COUNT(a.score=0) AS data1, COUNT(a.score>0) AS data2 FROM users AS u LEFT JOIN assoc AS a ON u.id = a.uid GROUP BY u.id ORDER BY times_played DESC LIMIT $limit") or sqlerr();

Det som inte funkar är data1 och data2. Jag vill att COUNT() bara ska räkna när det som är innom parenteserna uppfylls. Hur gör jag det?
Dvs COUNT(a.score=0) ska bara räkna de rader där score = 0. För som det är nu så räknar den alla rader.
Klart att det går att bara selecta score och sedan koll hur många som har värdet 0, men det vore bättre om det år att lösas direkt i queryn

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com

Permalänk
Medlem

prova

COUNT(IF(a.score=0,1, NULL)) AS data1
COUNT(IF(a.score>0,1, NULL)) AS data2

lite osäker på om det funkar, men det kan göra det...

Permalänk
Medlem

Funkar

Tusen tack för det snabba svaret!

Edit:
En fråga till.

Hur gör man för att ordna det man hämtar efter något man räknar ut som t.ex. "data1 * data2" eller som exemplet nedan.

Select data1, data2
ORDER BY data1 / data2 DESC

Hoppas ni förstår vad jag vill åstakomma!

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com