Pomoc se sql dotazem
Ahoj, potřeboval bych poradit se sql dotazem v následující situaci:
Mám následující tabulky:
pozn: tabulka(atribut)
prijemci(id,id_prijemce,typ_prijemce)
uzivatele(...,id,jmeno,prijmeni,...)
skupiny(...,id, nazev,...)
A teď mám v tabulce prijemci následující seznam:
(id,id_prijemce,typ_prijemce)
42,111,a
42,125,b
42,333,a
v tabulce uzivatele mám:
(id,jmeno,prijmeni)
111,pepa,novak
333,vaclav,sedlar
v tabulce skupiny mám:
(id,nazev)
125,xxx
A teď potřebuji udělat nějaký sql dotaz, který se podívá do tabulky prijemci vezme id_prijemce a když v typ_prijemce bude hodnota != "b" , tak uvedené id_prijemce najde v uzivatele a vezme si odtamtud jméno a příjmení
a když bude typ_prijemce "b", tak id_prijemce najde v tabulce skupiny a odtamtud vezme příslušný název...
ze seznamů příjemcu to bude brát jen ty řádky, kde bude id=předané id...
Nemáte nápad jak nejlépe to udělat? Samozřejmě, že si můžu udělat jednoduše select všech příjemců, seřadit dle typů a pak v cyklu v php udělat nejdřív selecty v uživatelích a pak v skupinách, ale nezdá se mi to moc čisté...
Poznámka - do budoucna se může stát situace, že bude víc typů, ne jen "a" a "b"
Moc díky...
v tomto případě jsi IMHO zbytečně přenormalizoval. Kdybys měl jen jednu tabulku users-groups a typ určil příznakem, tak jsi celý problém mohl zredukovat velmi jednoduše tak, že hledáš-li usera i skupinu, selektuješ stále na stejný parametr.
edit: samozřejmě netuším, k čemu chceš tu databázi používat a co všechno má "umět". Někdy ale je výhodné si trochu "zaoptimalizovat" s designem.
Ahoj, takto jsem DB už dostal a už se to nebude/nemůže měnit...musím si poradit s tímto stavem...
select přes tři tabulky, tabulka s uživateli bude vždy na levé straně a použiješ left join na obě zbylé tabulky a profiltruješ na id. Počítej s tím, že uživatelé budou mít prázdné atributy z tabulky skupiny, skupiny zase prázdné atributy uživatele.
pripadne:
potom uz si len niekde, kde to zobrazujes budes musiet spravne vybrat dane atributy, nakolko riadky pre uzivatelov budu mat prazdne pole pre nazov skupiny a riadky pre skupiny zase prazdne polia pre meno a priezvisko.
Ahoj, díky moc - vyzkouším během dne...
Ahoj, ještě koukám, že tam někde chybí podmínka na id v příjemcích...
Pro jistotu přikládám soubor, jak to potřebuji...
díky za pomoc...