Autor Zpráva
Taps
Profil
mám následující strukturu tabulky

odbor
id
nazev

oddeleni
id
id_odbor
nazev

a mám následující kod, který mi bohužel nefunguje
select distinct(o.nazev) as nazevodboru,od.nazev as nazevoddeleni
 from odbor o left join oddeleni od 
on o.id=od.id_odbor group by o.id order by nazevodboru ASC


Potřeboval bych aby se mi vypisoval
odbor a pod ním jeho oddělení.
např. takto

odbor 1
oddělení 1
oddělení 2
odbor 2
odbor3
oddělení 1
Je také nutné brát v potaz že někdy existuje pouze odbor bez oddělení. Mohl by mi někdo poradit
TomášK
Profil
Já bych tohle řešil až na úrovni aplikace - z databáze bych vytáhl odbory a oddělení - třeba i zvlášť nebo pomocí LEFT JOINu bez GROUP. Při výpisu bych měl tak dva cykly - jeden pro odbory a vnořený, který by vypisoval oddělení pro každý odbor. A zdá se mi zbytečný distinct - předpokládám, že spíš nebudou dva obory se různým id a stejným názvem (a pokud ano, tak je možná budeš chtít vypsat oba).
Taps
Profil
TomášK
dva cykly je zbytečné dělat, toto musí jít řešit na urovni sql dotazu
radas
Profil *
Taps
tak jak to navrhoval TomášK jsem to udělal u svého více urovňového menu, nic lepšího jsem nenašel..
Taps
Profil
radas
abych pravdu řekl tak toto řešení se mi moc nezamlouvá.
radas
Profil *
mi taky ne..ale jestli najdeš lepši ta doufam že se o něj poděliš, řešil jsem to už kdysi a nic moc jsem nevyřešil
TomášK
Profil
Z SQL dotazu ti můžou vypadnout data ve tvaru buď
obor1 oddeleni1
obor1 oddeleni2
obor2 null
obor3 oddeleni1

nebo dvě oddělené sady dat:
obor1 obor2 obor3 
oddeleni1(1) oddeleni2(1) oddeleni1(3)


Nenapadá mě žádná lepší struktura, kterou bys z toho mohl dostat. Problém je, že všechny záznamy, které ti vypadnou z jednoho dotazu mají stejné sloupce. Nejde tedy mít ve výsledku záznam pro obor, pak záznam pro oddělení, pak zas pro obor apod. Takže buď v u každého záznamu musí být informace jak o oboru, tak o oddělení (jen LEFT JOIN) nebo musíš získat dvě různé sady výsledků (dva SELECTy).
Kajman_
Profil *
Obě řešení zkoušel porovnávat Jakub

http://php.vrana.cz/srovnani-dotazu-do-zavislych-tabulek.php

Ale někdy je prostě vhodnější to a někdy ono.

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: