Tabeller: Finns något som heter left join. Tack Chansade lite och skrev: Märkte att det inte fungerade om jag hade flera subcategories med samma categoryid <code>hämta data ur "underfråga"
kategorier
Artiklar
Pris
Har en sql fråga där jag listar alla artiklar som hänger ihop
med en kategori.
I vissa fall vill jag hämta ut värden ur en 3:e tabell: pris.
Problemet är att det inte alltid finns eftersökt värde i den pris-tabellen.
dvs eftersökt artikel är inte inlagd i pristabellen.
Jag kan inte skriva:
select artikelnamn, pris
from artiklar, kategorier, pris
eftersom jag inte vet om det finns något post i pristabellen.
Om någon förstod frågan och har ett svar så är jag väldigt tacksam :)Sv: hämta data ur "underfråga"
SELECT artiklar.artikelnamn, pris.pris
FROM (artiklar LEFT JOIN kategorier ON artiklar.ArtikelKategori = kategorier.kategoriId) LEFT JOIN pris ON artiklar.artikelId = pris.PrisArtikel
Berätta gärna hur din datastruktur ser ut.Sv: hämta data ur "underfråga"
Men det funger inte.
Kan inte join, så jag vet inte varför det knasar.
Tabellerna ser ut som nedan:
category
---------
categoryid
categoryname
subcategories
---------------
subcategoryid
subcategoryname
categoryid
articles
--------
articleid
articlename
categoryid
price
-----
priceid
price
subcategoryid
articleid
Användaren ska välja en category och därefter en subcategory.
Då vill jag lista alla articles med samma categoryid som denna subcategory.
Finns subcategory och article kopplad i price vill jag ta ut priset
Det finns alltså inte alltid någon post i price-tabellen
Resultatet ska bli ex:
articlename price
----------------------
bröd 10
chips
mjölk 20Sv: hämta data ur "underfråga"
Vad tror du om det?
SELECT articles.articlename, price.price, price.priceid FROM (subcategories LEFT JOIN articles ON (articles.categoryid = subcategories.categoryid and subcategories.subcategoryid=27)) LEFT JOIN price ON articles.articleid = price.articleid;
Det verkar funka!
MEN, jag får med en massa NULL-rader :(
Hur blir jag av med dem.Sv: hämta data ur "underfråga"
så jag la till sista "and subcategories.subcategoryid=27"
Jag får fortfarande en massa null-rader.
SELECT articles.articlename, price.price, price.priceid FROM (subcategories LEFT JOIN articles ON (articles.categoryid = subcategories.categoryid and subcategories.subcategoryid=27)) LEFT JOIN price ON (articles.articleid = price.articleid and subcategories.subcategoryid=27);
Någon som kan korta ner den här koden och få bort nullraderna
Tack :)Sv: hämta data ur "underfråga"
SELECT articles.articlename, price.price, price.priceid
FROM articles LEFT JOIN price ON articles.articleid = price.articleid
WHERE articles.categoryid=27
</code>