Autor | Zpráva | ||
---|---|---|---|
maarlin Profil |
#1 · Zasláno: 7. 6. 2009, 15:58:25
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... Měl bych dotaz sestrojit jinak? Nebo ho jinak zpracovat? Díky za každou radu. |
||
TomášK Profil |
#2 · Zasláno: 7. 6. 2009, 22:08:03
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 * |
#3 · Zasláno: 8. 6. 2009, 10:20:04
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. |
||
Časová prodleva: 16 let
|
0