I tabellen "products" har jag bl.a. ett fält som heter "coll". Detta värde matchas mot tabellen "collections_desc" där resten av datan hämtas:
SELECT * FROM products,collections_desc WHERE products.id='.$prodID.' AND collections_desc.id = products.coll
Nu visar det sig att "coll" ibland kan vara tomt (NULL). Då finns det ju inte någon att hämta i "collections_desc" vilket resulterar i fel. Hur löser man det?
Har du lust att visa var i SQL-frågan man skall stänga in det?
Nu fick du queryn av Peter ser jag. Jag trodde att du fastnade på vilken typ av join som hämtar tomma rader. Tål att läsas om ifall du inte vet hur de fungerar.
Nu har jag stött på ett nytt problem. I samband med den här SQL-frågan vill jag också ha ut viss data från tabellen "products_desc" (här ligger t.ex name, price och annat som hör till produkten). Jag testade med att lägga till ytterligare en LEFT JOIN men det verkar inte fungera så bra: :l
SELECT
*
FROM
products
LEFT JOIN
collections_desc
ON
collections_desc.id = products.coll
LEFT JOIN
products_desc
ON
products_desc.id = products[s].coll[/s] .id
WHERE
products.id='.$prodID.'
/r Gahh!! Det var bara ett slarvfel (se ovan). Jag bjuder på det idag.
Ajdå. Om kolumnen "products.coll" är NULL så resulterar inte frågan något. Att den inte hämtar nåt från "collections_desc" är ju riktigt men jag vill ju fortfarande ha fram allt ur "products" och "products_desc". Hur löser man det tro?
SELECT
*
FROM
products
LEFT JOIN
collections_desc
ON
collections_desc.id = products.coll
LEFT JOIN
products_desc
ON
products_desc.id = products.id
WHERE
products.id='.$prodID.'
/r Nu inser jag att det beror på att WHERE igentligen ser ut så här (jag hämtar rätt språk):
WHERE
products.id='.$prodID.' AND collections_desc.lang = "'.$_SESSION['lang'].'" AND products_desc.lang = "'.$_SESSION['lang'].'"')
Och om "coll" är NULL så finns det ju inte något "lang" att hämta...
Hur gör jag för att bara hämta "collections_desc.lang" ifall "products.coll" <> NULL :q
SELECT
*
FROM
(products
INNER JOIN
products_desc
ON
products_desc.id = products.id)
LEFT JOIN
collections_desc
ON
collections_desc.id = products.coll AND
collections_desc.lang = "'.$_SESSION['lang'].'"
WHERE
products.id='.$prodID.' AND
products_desc.lang = "'.$_SESSION['lang'].'"