Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
#1 · Zasláno: 27. 10. 2008, 12:47:19
Zdravím,
mám následující tabulky: pn_strediska, pn_kraje, pn_okresy, pn_faktury Potřebuji vypsat všechna střediska bez ohledu na to, zda jim už byla vystavena faktura. Toto funguje bez problémů: SELECT pn_strediska.provozovatel, pn_faktury.cislo_faktury FROM pn_strediska LEFT JOIN pn_faktury ON ( pn_strediska.id_user = pn_faktury.id_user ) Problém ovšem nastává, když chci u středisek zobrazit i název kraje a okresu. Toto nefunguje: SELECT pn_strediska.provozovatel, pn_faktury.cislo_faktury, pn_kraje.nazev AS nazev_kraje, pn_okresy.okres AS nazev_okresu FROM pn_strediska, pn_okresy, pn_kraje LEFT JOIN pn_faktury ON ( pn_strediska.id_user = pn_faktury.id_user ) WHERE pn_strediska.id_okres = pn_okresy.id AND pn_strediska.id_kraj = pn_kraje.id Kde dělám chybu? |
||
Mastodont Profil |
#2 · Zasláno: 27. 10. 2008, 13:10:10
Chybu máš tady:
FROM pn_strediska, pn_okresy, pn_kraje LEFT JOIN pn_faktury ON ( pn_strediska.id_user = pn_faktury.id_user ) Jeden JOIN může být definován jen pro dvě tabulky, chceš-li připojit další, musí to vypadat tak jako na http://www.linuxsoft.cz/article.php?id_article=837 |
||
Tomáš K. Profil * |
#3 · Zasláno: 27. 10. 2008, 13:18:22
Chybu nevidim ( což samozřejmě neznamená, že tam není :) ), jediné, co mě napadá, že by v tabulkách nebyl zadaný kraj nebo okres...
Zkusil bych ten dotaz trochu pozměnit: SELECT pn_strediska.provozovatel, pn_faktury.cislo_faktury, pn_kraje.nazev AS nazev_kraje, pn_okresy.okres AS nazev_okresu FROM pn_strediska LEFT JOIN pn_faktury USING(id_user) LEFT JOIN pn_okresy ON pn_strediska.id_okres = pn_okresy.id LEFT JOIN pn_kraje ON pn_strediska.id_kraj = pn_kraje.id Měl by provádět skoro totéž, jen tam budou i střediska, ke kterým není kraj nebo okres. |
||
mackopu Profil |
#4 · Zasláno: 27. 10. 2008, 13:31:47 · Upravil/a: mackopu
Tak jsem se proklikal až na Odkaz, kde kdosi uvádí, že je třeba tabulky za FROM obalit závorkami (!!!). Zajímavé...
Funguje to, takže: SELECT pn_strediska.provozovatel, pn_faktury.cislo_faktury, pn_kraje.nazev AS nazev_kraje, pn_okresy.okres AS nazev_okresu FROM (pn_strediska, pn_okresy, pn_kraje) LEFT JOIN pn_faktury ON ( pn_strediska.id_user = pn_faktury.id_user ) WHERE pn_strediska.id_okres = pn_okresy.id AND pn_strediska.id_kraj = pn_kraje.id Snad to někomu pomůže, o těch závorkách jsem se nedočetl ani v manuálu. Tomáš K. - Tohle funguje taky :-) |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0