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

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

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

Příspěvek 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
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

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

Příspěvek 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...
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

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

Příspěvek 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ý
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

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

Příspěvek 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.
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Odpovědět

Zpět na „Programování a web“