Autor Zpráva
Manny
Profil *
Ahoj, pokouším se vytáhnout data, která je potřeba kontrolovat ve 3. tabulkách. Data se mi vypíší, ale nikdy správné hodnoty. Mám takové struktury tabulek.
Tab1:
====
id
nazev
...

Tab2:
====
id
tab1_id
cislo_popisne

Tab3: (obsahuje vybrana data)
====
id
neco (neco == Tab2.id)

v Tab3 mám 3 záznamy, a to s hodnotami:
100
300
200

a zkouším si tato data vypsat takto:
SELECT Tab1.*, Tab2.cislo_popisne FROM Tab1, Tab2, Tab3 WHERE Tab1.id=Tab2.tab1_id 
            AND Tab2.id=Tab3.neco AND Tab1.id=3

Dostanu jako výsledek hodnoty
200
200
200
(zkrátka tu poslední zvolenou hodnotu)

Když zkusím:
SELECT Tab1.*, Tab2.cislo_popisne FROM Tab1
            LEFT JOIN Tab2 ON Tab1.id=Tab2.tab1_id 
            LEFT JOIN Tab3 ON Tab2.id=Tab3.neco WHERE Tab1.id=5

A dostanu:
300
300
300
(zkrátka tu nejvyšší zvolenou hodnotu)

Nevěděl by pls někdo, jak se dostat ke všem hodnotám, abych dostal na výstupu ony
100
300
200

Díky. (PS - snad jsem ty tabulky přepsal správně)
AM_
Profil
Možná by to chtělo názornější příklad, než tabulky pojmenované Tab1-3 a sloupce "něco" :) takhle si ani nějak neumím představit, jak že to vlastně má fungovat.

Jinak selectování z více tabulek kartézským součinem (oddělené čárkou) nepovažuji vzhledem k vnitřní implementaci za šťastné, raději používám (a přijde mi i přehlednější) joinování, vypadá to nějak takhle:
    SELECT vyrobky.id, vyrobky.nazev, skupiny.nazev AS skupina_nazev
    FROM vyrobky
    LEFT JOIN skupiny ON vyrobky.skupina = skupiny.id
    WHERE podminka


(převzato z http://www.root.cz/clanky/spojovani-tabulek/)

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