Autor Zpráva
maarlin
Profil
Zdravím,
reším možná pro někoho z vás primitivní problém:
vyberu data z databáze z více tabulek, třeba takto:
SELECT * FROM zamestnanci,majetek WHERE zamestnanci.id = majetek.id_zamestnance AND majetek.typ = 'nabytek' GROUP BY majetek.id;


Příklad struktury tabulek:
zamestnanci
id,jmeno...
majetek
id,id_zamestnance,typ

Což by ve vymyšleném příkladu vybralo z databáze všechny zaměstnance, kteří vlastní nějaký nábytek.
Záhadou pro mě je, jak dostat z toho dotazu třeba hodnotu sloupce majetek.id a zároveň zamestnanci.id, když jsem data zpracoval pomocí mysql_fetch_assoc(), klíče v indexech byly jen samotné názvy sloupců - tzn. třeba jen id,jmeno,typ,... ale klíč majetek.id neexistoval.
Musím vypisovat přímo názvy sloupců, jako např.
SELECT zamestnanci.id AS zamestnancovo_id,majetek.id AS id_majetku FROM...
? Sloupců je poměrně dost a nerad bych zase vymýšlel nové názvy, rád bych k tomu přistupoval přesně tak, jak je to v db - název-tabulky.název-sloupce
Měl bych dotaz sestrojit jinak? Nebo ho jinak zpracovat?

Díky za každou radu.
TomášK
Profil
Pokud máš ve výsledku dva sloupce se stejným jménem - např. id, pak je musíš aliasovat pomocí AS. Pokud vím, jiná cesta není.
Ilustrační případ ale není úplně v pořádku, ten dotaz se mi moc nepozdává. Jde o klauzuli GROUP BY majetek.id, které je zbytečné - nevyřadí žádné záznamy. Aby to dělalo, co píšeš, muselo by tam být GROUP BY zamestanec.id. Ani v jednom případě nedává moc smysl vybrat majetek.id i zaměstanec.id - jeden z těch sloupců není v GROUP BY klauzuli. Ono to něco vrátí, ale nevíš co - pokud ve skupině (např. majetků jednoho zaměstnance) bude víc.
Kajman_
Profil *
Můžete si to takovou funkci naprogramovat s pomocí http://cz2.php.net/manual/en/function.mysql-fetch-field.php

Ale rozumnější bude úprava sql dotazu, tak aby vracel jednoznačná data i názvy, jak píše TomášK.

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