Citat:
Ursprungligen postat av Rospigg
SELECT COUNT(type) WHERE status = 0 UNION SELECT COUNT(type) WHERE status = 1
ger:
COUNT(type)
------------
1
2
Det är ju jävligt nödvändigt att köra en union? Om det nu är det där du ska ha ut, så ska det se ut så här:
Kod:
SELECT COUNT(type) as Antal
FROM dintabell
WHERE (status = 0) OR (status = 1)
GROUP BY status
Ger:
Sen kan man ju undra vad det är för mening att plocka ut en count utan att plocka ut statusen som count:en gäller för.
Kod:
SELECT status, COUNT(type) as Antal
FROM dintabell
WHERE (status = 0) OR (status = 1)
GROUP BY status
Ger:
Kod:
status Antal
--------------
0 1
1 2
Sen, om jag fattar din PHP-kod korrekt, så funkar ovanstående i alla fall inte, för att du vill returnera båda count:en på samma rad. Vilket för oss tillbaks till det andra alternativet jag postade ovan:
Kod:
SELECT SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) AS Count_Status_0,
SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS Count_Status_1
FROM dintabell
WHERE (status = 0) OR (status = 1)
Vilket ger:
Kod:
Count_Status_0 Count_Status_1
---------------------------------
1 2
Och då bör du kunna köra:
Kod:
list($status0, $status1) = mysql_feth_row(mysql_query("SELECT SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) AS Count_Status_0, SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS Count_Status_1 FROM dintabell WHERE (status = 0) OR (status = 1)"));