Stránka 1 z 1

Vybírání z více tabulek v MySQL

Napsal: stř 27. led 2010, 21:10
od arxeiss
Potřeboval bych poradit, doufám že to půjde.
Mám několik tabulek z nich vybírám data na výpis všech produktů. V tabulce produkty je sloupec miniatura který obsahuje text image/číslo.jpg to číslo je taky v tabulce image jako ID a já bych potřeboval ke každému produktu nějaké informace o daném obrázku. Funguje to dobře, problém je když ten obrázek tam není. Jelikož jeho přidání není povinné. Poté ovšem to nevrátí nic, ale já bych chtěl aby to vrátilo prázdný text.

Kód: Vybrat vše

SELECT P.id, P.jmeno, P.kpopis, P.miniatura, P.letak, P.instrukce, P.karta, PS.nazev AS psnazev, PS.id AS psid, S.id AS sid, S.nazev AS snazev, I.popisek AS imgalt
FROM produkty P, produkty_podskup PS, produkty_skup S, image I
WHERE P.skupina = PS.id
AND PS.skupina = S.id
AND concat('image/',I.id,'.jpg')=P.miniatura
AND zobraz =1

Re: Vybírání z více tabulek v MySQL

Napsal: stř 27. led 2010, 21:29
od OndraSter
Použij LEFT JOIN, to by mělo stačit aby to místo "ničeho" vrátilo prázdný string (?), teď si to přesně nevybavuju, PHP jsem hluboce zakopal...

Re: Vybírání z více tabulek v MySQL

Napsal: stř 27. led 2010, 22:06
od arxeiss
Nějak mi to nejde.... :( Zkoušel jsem to dávat různě a furt nic. Kdyby jsi někdo našel čas a zkusil to... Byl bych mu vděčný

Re: Vybírání z více tabulek v MySQL

Napsal: ned 31. led 2010, 14:36
od arxeiss
Tak jsem zkoušel a něco se mi povedlo. Když napíšu :

Kód: Vybrat vše

SELECT P.id, P.jmeno, P.kpopis, P.miniatura, P.letak, P.instrukce, P.karta, image.popisek
FROM produkty P
LEFT JOIN image ON P.miniatura=image.id
Tak to funguje OK, jakmile dám toto:

Kód: Vybrat vše

SELECT P.id, P.jmeno, P.kpopis, P.miniatura, P.letak, P.instrukce, P.karta, image.popisek
FROM produkty P, produkty_podskup PS
LEFT JOIN image ON P.miniatura=image.id
WHERE P.skupina = PS.id
Tak už to nejede, a hlásí #1054 - Unknown column 'P.miniatura' in 'on clause'

Edit:\\ Zkouším a pokud napíšu toto

Kód: Vybrat vše

SELECT P.id, P.jmeno, P.kpopis, P.miniatura, P.letak, P.instrukce, P.karta, image.popisek
FROM produkty P
LEFT JOIN image ON P.miniatura = image.id
WHERE P.id =1
tak to jede. Takže nechápu proč mi nejde jenom spojit více tabulek.
------------------------------------------------------------------------------
Edit2:\\ Tak to jsem nakonec vyřešil že jsem tam dal za FROM jednu tabulku, a ostatní vložil přes LEFT JOIN nebo JOIN. Teď ale řeším další problém. Což už ale asi nepůjde. Chtěl jsem aby v tabulce produkty kde jsou sloupce soubor1, soubor2 soubor3 vzaly jejich jména, a vrátilo to 3x jejich velikost která je zapsaná v tabulce FILE.