Autor Zpráva
nowis
Profil *
Zdravím a prosím o pomoc s dotazem na který jsem krátký

Mám 1 databázi lidí, kteří mají různé funkce, pro zjednodušení řekněme technik a prodejce. Tito lidé mají vždy svou unikátní zkratku (iniciály)
Druhá tabulka obsahuje zakázky. V této databázi jsou pracovníci uvedení pod svým celým jménem, tedy celé jméno je společný identifikátor pro obě tabulky.
Jak bych měl sestavit dotaz, který mi k tabulce zakázek přiřadí správně zkratky z databáze pracovníků? S jedním sloupcem si vím rady, ale nevím, jak to rozdělit na 2 sloupce (zkratka_technik, a zkratka_prodejce)

Možná je to maličkost, ale já fakt nevím jak na to. Dotaz pro přidání zkratek k prodejcům mám takto:

SELECT zakazky.*, pracovnici.zkratka as zkratka_prodejce FROM zakazky, pracovnici WHERE zakazky.prodejce = CONCAT(users.Prijmeni,' ', users.Jmeno)

Dík
juriad
Profil
SELECT z.*, p.zkratka as zkratka_prodejce, t.zkratka as zkratka_technika
FROM zakazky as z JOIN pracovnici as p ON (z.prodejce = p.jmeno) JOIN pracovnici  as t ON (z.technik = t.jmeno)
joinovací podmínku máš divnou: v jedné tabulce "jméno příjmení" a ve druhé "jméno", "příjmení"; ale to by nemělo ničemu bránit (jen snižuje výkon funkce CONCAT)
můžeš používat aliasy u názvů tabulek
nowis
Profil *
juriad:
jo, tak to funguje. Ale fakt jsem na to krátký, protože tomu dotazu nerozumím. Ale já to nastuduju :-)

ta podmínka je divná, protože ty tabulky jsou takhle blbě navržené, ale výkon v tuto chvíli není problém a předělávat to jen pro pocit asi nemá smysl.

Díky
juriad
Profil
klidně se to může přepsat do starší syntaxe, kterou znáš (oba dotazy jsou ekvivalentní):
SELECT ... FROM zakazky as z, pracovnici as p, pracovnici as t WHERE z.prodejce = p.jmeno AND z.technik = t.jmeno
jakmile bys přidal podmínku AND p.velikost_bot = t.velikost_bot , tak už nebude jasné na první pohled, co podmínka znamená a proč tam je (filtruje, nebo se stará o nějakou závislost)
novější způsob umožňuje odlišit podmínky na filtraci (chci jen nějaké záznamy) od spojovacích podmínek (připoj mi další tabulku, tak aby platilo ...)
nowis
Profil *
jj, dík, už to trošku chápu

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