Autor | Zpráva | ||
---|---|---|---|
enoice Profil |
#1 · Zasláno: 5. 4. 2007, 19:47:14
Ahoj,
v MySQL mam tri tabulky: kraje, mesta, objekty. kraje: id, jmeno mesta: id, jmeno, idkraje objekty: id, jmeno, idmesta v SQL nejsem příliš zběhlej, takže to snad nebude tak složitý. Tedy, potřebuju vypsat všechny objekty z daného kraje... čili kde objekty.idmesta = mesta.id a kraje.id = mesta.idkraje Díky |
||
Casero Profil |
#2 · Zasláno: 5. 4. 2007, 19:58:32
enoice
něco jako select sloupce from objekty o left join mesta m on o.idmesta=m.id left join kraje k on k.id=m.idkraje where k.jmeno=neco |
||
MzM Profil |
#3 · Zasláno: 6. 4. 2007, 10:53:44 · Upravil/a: MzM
myslím, že v tomto případě je potřeba použít join místo left join, nebo jinak poskládat tabulky (první tu s krajem), enoice chce seznam objektů z kraje ne všechny objekty.
Jinak se selectem souhlasím. |
||
enoice Profil |
#4 · Zasláno: 6. 4. 2007, 13:33:17 · Upravil/a: enoice
se SELECT taky souhlasim :D to join se pouziva jak?
Ja to nějak moc nechápu... SELECT objekty.* FROM objekty,mesta,kraje WHERE objekty.idmesta = mesta.id AND mesta.idkraje = kraje.id tak nějak bych to viděl já, ale takhle mi to nefunguje |
||
Ssob Profil |
#5 · Zasláno: 6. 4. 2007, 19:57:42
skus
|
||
Časová prodleva: 6 dní
|
|||
MzM Profil |
#6 · Zasláno: 12. 4. 2007, 08:08:25
no, join a left join (možno vidět i jako inner join a left outer join)
join spojí tabulky podle daného kritéria (to je to za "on") a vypíše ty řádky, kde se naskytne shoda. V tomto případě je jedno, jestli spojuju tabulku 1 s tabulkou 2 nebo tabulku 2 s tabulkou 1. Příklad: tab1: id | text ---------- 1 | aaa 2 | bbb 3 | ccc tab2: id | cizi_id | jinytext ------------------------- 1 | 1 | toto 2 | 3 | tamto provedu join: select a.text, b.jinytext from tab1 a join tab2 b on a.id = b.cizi_id dostanu text | jinytext ----------------- aaa | toto ccc | tamto pokud udělám left join select a.text, b.jinytext from tab1 a left join tab2 b on a.id = b.cizi_id dostanu text | jinytext ----------------- aaa | toto bbb | (null) ccc | tamto tedy všechno z první tabulky a připojí text z druhé tabulky, pokud se mu podaří najít odpovídající řádek. na netu je toho plno. (dále viz right join, cross join) |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0