Autor Zpráva
karlos1
Profil *
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
karlos1:
Zkuste:

SELECT *, d.status, IFNULL(GROUP_CONCAT(h.p_id), -1) p
FROM ...
(a asi by nemělo chybět nastavení, podle čeho se mají řádky seskupovat).
karlos1
Profil *
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: