Autor | Zpráva | ||
---|---|---|---|
karlos1 Profil * |
#1 · Zasláno: 25. 8. 2014, 16:06:37
Ahoj,
mám následující kód, který má vybrat buď sadu hodnot a udělat z nich string oddělený čárkami, nebo "-1", pokud hodnota neexistuje. SELECT c.*, d.status, IF(h.p_id <= 0, '-1', GROUP_CONCAT(h.p_id)) AS p -- zahodi mi vysledek, ktery neni v tabulce h, tedy h.p_id = NULL... mimochodem, melo by to byt NULL, ale podminka h.p_id = NULL, h.p_id = '' nefunguji, zacala fungovat az nerovnost s nulou. Radky, kde p=-1 mi to nevraci -- IF(h.p_id <= 0, '-1', 33) AS p -- tato alternativni podminka vrati vsechny radky, 'p' je bud 33, nebo -1 FROM c JOIN d ON d.id = c.d_id LEFT JOIN h ON c.id = h.id V čem dělám chybu? |
||
Tori Profil |
#2 · Zasláno: 25. 8. 2014, 20:10:48
karlos1:
Zkuste: SELECT *, d.status, IFNULL(GROUP_CONCAT(h.p_id), -1) p FROM ... |
||
karlos1 Profil * |
#3 · Zasláno: 25. 8. 2014, 20:19:04
Tori:
SELECT *, d.status, IFNULL(GROUP_CONCAT(h.p_id), -1) p bylo první, co jsem zkoušel.
Ale máš pravdu, chybí group by , pak funguje jak můj zápis, tak i tento. Už jsem na to přišel, než jsem se vydal na cestu k domovu.
Takže tímto potvrzuji, že jsou oba zde uvedené kódy správné a chybí formule group by .
Díky. |
||
Časová prodleva: 10 let
|
0