Autor Zpráva
bob99
Profil
Potřeboval bych poradit s následujícím SELECT dotazem. Mám dejme tomu jednu tabulku kde je sloupec "ico" a sloupec "nazev. Sloupec "ico" může obsahovat duplicitní hodnoty (ne NULL), sloupev "nazev" může obsahovat duplicitní ale i NULL.

SELECT ico, nazev FROM tabulka GROUP BY 1 ORDER BY 2
...

Úkol je vypsat seznam "ICO" neduplicitní spolu s názvem setříděných podle sloupce nazev. Problém mám v tom že u některých ICO se zobrazují NULL hodnoty. Chtělo by to aby dotaz pokud je nazev = "" vybral nazev z jineho radku, kde není prázdný viz příklad:

SELECT ico, if(nazev = "", (SELECT nazev FROM tabulka WHERE nazev != "" AND ... ) , nazev) FROM tabulka GROUP BY 1 ORDER BY 2
...tohle jen pro pochopení jinak je blbost :-)

Díky za každou radu.
Kajman_
Profil *
Na název lze použít např. agregační funkci max či min...
select ico, min(nazev) nazev from tabulka group by ico
bob99
Profil
Zadal jsem jak píšete a ve výsledku jsou stále ve sloupci nazev NULL hodnoty....
bob99
Profil
Tak už se podařilo. Ne min() ale max() ..... sice jsou vy výsledku ještě nějaké NULL hodnoty, ale to je tím že neexistuje žádný jiný řádek ico, který není NULL.

Díky
bob99
Profil
Ještě mě napadlo jestli by to šlo najít v jiné tabulce a jak by asi ten dotaz vypadal?
Kajman_
Profil *
Prázdný řetězec a null hodnota není v mysql to samé, pokud tam máte prázdné řetězce, ale nechcete je uvádět, tak to vyřeší ten max, případně zakomponování funkce nullif.

Na spojení tabulek se používá konstrukce
join

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:

0