Autor Zpráva
george[06]
Profil *
Mám 2 tabulky (A, B) ve vztahu M:N, vytvořil jsem tedy 3. pomocnou tabulku C (abych docílil dvou vztahů 1:N), která obsahuje primární klíče (id-A, id-B) obou tabulek. Potřebuji tedy vypsat související záznamy z tabulky A a B pomocí třetí tabulky C. Jde mi o to, zda je následující SQL dotaz syntakticky (a logicky) správný?


SELECT $tab_A.`id-A`,$tab_A.`zaznam1`,$tab_A.`zaznam2`, $tab_B.`id-B`,$tab_B.`zaznam1`,$tab_B.`zaznam2 FROM $tab_A, $tab_B INNER JOIN $tab_C ON $tab_C.`id-A`=$tab_A.`id-A` AND $tab_C.`id-B`=$tab_B.`id-B`
MzM
Profil
Nejlepší je, to zkusit, ne?
Podle mě to dobře není.
...
from tab1, tab2 join tab3 on (podm)
vyrobí spojení tab2 a tab3 podle dané podmínky (nevím co vyrobí s těmi podmínkami na tab1) a tento výběr spojí (každý řádek ke každému řádku) s tabulkou tab1

join je na spojení tabulky "vlevo" s tabulkou "vpavo" podle pravidel za ON.

dám příklad, který by pravděpodobně měl řešit tvůj problém. (tu vazební tabulku nazvu tab_v)

select ....(sloupečky)
form tab1
join tab_v on tab1.id = tab_v.id_1
join tab2 on tab2.id = tab_v.id_2

slovně, tabulku 1 spojím podle klíčů s vazební tabulkou, na vazební tabulku napojím ještě tabulku 2.

možná by bylo lepší začít tou vazební tabulkou, ale v případě použití join je to jedno

select ....(sloupečky)
form tab_v
join tab1 on tab1.id = tab_v.id_1
join tab2 on tab2.id = tab_v.id_2

ale možná je to zřejmnější.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0