Ik heb twee tabellen in een database. Van de tweede tabel zijn er vier 'instanties', dus in totaal heb ik eigenlijk vijf tabellen.
Tabel 1 is shop_tbl_artikel en tabel 2 is shop_tbl_categorie (instanties: shop_tbl_automerk, shop_tbl_autotype, shop_tbl_onderdeeltype, shop_tbl_onderdeelmerk)
Tabel 1 heeft 2 directe verwijzingen naar tabel 2 (naar shop_tbl_autotype en naar shop_tbl_onderdeelmerk), aan de hand van respectievelijk categorieid_1 en categorieid_2. Deze zijn gelinkt aan shop_tbl_categorie.id. Shop_tbl_categorie is op zijn beurt door middel van supercategorieid gelinkt aan een andere 'instantie' van shop_tbl_categorie. shop_tbl_autotype is gelinkt aan shop_tbl_automerk en shop_tbl_onderdeelmerk is gelinkt aan shop_tbl_onderdeeltype.
Nu wil ik een query maken waarmee ik artikelen ophaal, met de bijbehorende 'categorienaam' en 'id' van shop_tbl_automerk, shop_tbl_autotype, shop_tbl_onderdeeltype, shop_tbl_onderdeelmerk en ik wil filteren op shop_tbl_artikel.isaanbieding=0, shop_tbl_automerk.id en shop_tbl_onderdeeltype.id.
Nou heb ik al verschillende dingen geprobeerd met verschillende joins, maar of het werkt niet onder MySQL of er komen te weinig resultaten.
Poging 1:
SELECT shop_tbl_artikel.omschrijving, shop_tbl_categorie_1.categorienaam AS Autotype, shop_tbl_categorie.categorienaam AS Automerk, shop_tbl_categorie.id AS Automerkid, shop_tbl_categorie_3.categorienaam AS Onderdeelmerk, shop_tbl_categorie_2.categorienaam AS Onderdeeltype, shop_tbl_categorie_2.id AS Onderdeeltypeid
FROM ((shop_tbl_artikel LEFT JOIN shop_tbl_categorie AS shop_tbl_categorie_1 ON shop_tbl_artikel.categorieid_1 = shop_tbl_categorie_1.id) LEFT JOIN shop_tbl_categorie ON shop_tbl_categorie_1.supercategorieid = shop_tbl_categorie.id) LEFT JOIN (shop_tbl_categorie AS shop_tbl_categorie_3 LEFT JOIN shop_tbl_categorie AS shop_tbl_categorie_2 ON shop_tbl_categorie_3.supercategorieid = shop_tbl_categorie_2.id) ON shop_tbl_artikel.categorieid_2 = shop_tbl_categorie_3.id
WHERE (((shop_tbl_categorie.id)=344) AND ((shop_tbl_categorie_2.id)=1444));
Poging 2:
SELECT shop_tbl_artikel.id, shop_tbl_artikel.artikelsoortid, shop_tbl_artikel.categorieid_1, shop_tbl_artikel.categorieid_2, shop_tbl_artikel.oenummer, shop_tbl_artikel.artikelnummer, shop_tbl_artikel.brutoprijs, shop_tbl_artikel.omschrijving, shop_tbl_artikel.foto, shop_tbl_artikel.foto_groot, shop_tbl_artikel.bouwjaar, shop_tbl_artikel.isaanbieding, shop_tbl_automerk.id, shop_tbl_automerk.categorienaam AS automerk, shop_tbl_autotype.id, shop_tbl_autotype.categorienaam AS autotype, shop_tbl_onderdeelmerk.id, shop_tbl_onderdeelmerk.categorienaam AS onderdeelmerk, shop_tbl_onderdeeltype.id, shop_tbl_onderdeeltype.categorienaam AS onderdeeltype
FROM shop_tbl_artikel,
shop_tbl_categorie AS shop_tbl_autotype,
shop_tbl_categorie AS shop_tbl_automerk,
shop_tbl_categorie AS shop_tbl_onderdeelmerk,
shop_tbl_categorie AS shop_tbl_onderdeeltype
WHERE
shop_tbl_artikel.categorieid_1 = shop_tbl_autotype.id
AND shop_tbl_autotype.supercategorieid = shop_tbl_automerk.id
AND shop_tbl_artikel.categorieid_2 = shop_tbl_onderdeelmerk.id
AND shop_tbl_onderdeelmerk.supercategorieid = shop_tbl_onderdeeltype.id
AND shop_tbl_automerk.id = '344'
AND shop_tbl_onderdeeltype.id = '1444'
AND isaanbieding = '0'
ORDER BY autotype, shop_tbl_artikel.omschrijving ");
Poging 3:
SELECT shop_tbl_artikel.id, shop_tbl_artikel.artikelsoortid, shop_tbl_artikel.categorieid_1, shop_tbl_artikel.categorieid_2, shop_tbl_artikel.oenummer, shop_tbl_artikel.artikelnummer, shop_tbl_artikel.brutoprijs, shop_tbl_artikel.omschrijving, shop_tbl_artikel.foto, shop_tbl_artikel.foto_groot, shop_tbl_artikel.bouwjaar, shop_tbl_artikel.isaanbieding, shop_tbl_automerk.id, shop_tbl_automerk.categorienaam AS automerk, shop_tbl_autotype.id, shop_tbl_autotype.categorienaam AS autotype, shop_tbl_onderdeelmerk.id, shop_tbl_onderdeelmerk.categorienaam AS onderdeelmerk, shop_tbl_onderdeeltype.id, shop_tbl_onderdeeltype.categorienaam AS onderdeeltype
FROM shop_tbl_artikel
INNER JOIN shop_tbl_categorie AS shop_tbl_autotype ON shop_tbl_artikel.categorieid_1 = shop_tbl_autotype.id
INNER JOIN shop_tbl_categorie AS shop_tbl_automerk ON shop_tbl_autotype.supercategorieid = shop_tbl_automerk.id
INNER JOIN shop_tbl_categorie AS shop_tbl_onderdeelmerk ON shop_tbl_artikel.categorieid_2 = shop_tbl_onderdeelmerk.id
INNER JOIN shop_tbl_categorie AS shop_tbl_onderdeeltype ON shop_tbl_onderdeelmerk.supercategorieid = shop_tbl_onderdeeltype.id
WHERE shop_tbl_automerk.id = '$automerkid' AND shop_tbl_onderdeeltype.id = '$onderdeelid' AND isaanbieding = '0'
ORDER BY autotype, shop_tbl_artikel.omschrijving ");
Help?
Tabel 1 is shop_tbl_artikel en tabel 2 is shop_tbl_categorie (instanties: shop_tbl_automerk, shop_tbl_autotype, shop_tbl_onderdeeltype, shop_tbl_onderdeelmerk)
Tabel 1 heeft 2 directe verwijzingen naar tabel 2 (naar shop_tbl_autotype en naar shop_tbl_onderdeelmerk), aan de hand van respectievelijk categorieid_1 en categorieid_2. Deze zijn gelinkt aan shop_tbl_categorie.id. Shop_tbl_categorie is op zijn beurt door middel van supercategorieid gelinkt aan een andere 'instantie' van shop_tbl_categorie. shop_tbl_autotype is gelinkt aan shop_tbl_automerk en shop_tbl_onderdeelmerk is gelinkt aan shop_tbl_onderdeeltype.
Nu wil ik een query maken waarmee ik artikelen ophaal, met de bijbehorende 'categorienaam' en 'id' van shop_tbl_automerk, shop_tbl_autotype, shop_tbl_onderdeeltype, shop_tbl_onderdeelmerk en ik wil filteren op shop_tbl_artikel.isaanbieding=0, shop_tbl_automerk.id en shop_tbl_onderdeeltype.id.
Nou heb ik al verschillende dingen geprobeerd met verschillende joins, maar of het werkt niet onder MySQL of er komen te weinig resultaten.
Poging 1:
SELECT shop_tbl_artikel.omschrijving, shop_tbl_categorie_1.categorienaam AS Autotype, shop_tbl_categorie.categorienaam AS Automerk, shop_tbl_categorie.id AS Automerkid, shop_tbl_categorie_3.categorienaam AS Onderdeelmerk, shop_tbl_categorie_2.categorienaam AS Onderdeeltype, shop_tbl_categorie_2.id AS Onderdeeltypeid
FROM ((shop_tbl_artikel LEFT JOIN shop_tbl_categorie AS shop_tbl_categorie_1 ON shop_tbl_artikel.categorieid_1 = shop_tbl_categorie_1.id) LEFT JOIN shop_tbl_categorie ON shop_tbl_categorie_1.supercategorieid = shop_tbl_categorie.id) LEFT JOIN (shop_tbl_categorie AS shop_tbl_categorie_3 LEFT JOIN shop_tbl_categorie AS shop_tbl_categorie_2 ON shop_tbl_categorie_3.supercategorieid = shop_tbl_categorie_2.id) ON shop_tbl_artikel.categorieid_2 = shop_tbl_categorie_3.id
WHERE (((shop_tbl_categorie.id)=344) AND ((shop_tbl_categorie_2.id)=1444));
Poging 2:
SELECT shop_tbl_artikel.id, shop_tbl_artikel.artikelsoortid, shop_tbl_artikel.categorieid_1, shop_tbl_artikel.categorieid_2, shop_tbl_artikel.oenummer, shop_tbl_artikel.artikelnummer, shop_tbl_artikel.brutoprijs, shop_tbl_artikel.omschrijving, shop_tbl_artikel.foto, shop_tbl_artikel.foto_groot, shop_tbl_artikel.bouwjaar, shop_tbl_artikel.isaanbieding, shop_tbl_automerk.id, shop_tbl_automerk.categorienaam AS automerk, shop_tbl_autotype.id, shop_tbl_autotype.categorienaam AS autotype, shop_tbl_onderdeelmerk.id, shop_tbl_onderdeelmerk.categorienaam AS onderdeelmerk, shop_tbl_onderdeeltype.id, shop_tbl_onderdeeltype.categorienaam AS onderdeeltype
FROM shop_tbl_artikel,
shop_tbl_categorie AS shop_tbl_autotype,
shop_tbl_categorie AS shop_tbl_automerk,
shop_tbl_categorie AS shop_tbl_onderdeelmerk,
shop_tbl_categorie AS shop_tbl_onderdeeltype
WHERE
shop_tbl_artikel.categorieid_1 = shop_tbl_autotype.id
AND shop_tbl_autotype.supercategorieid = shop_tbl_automerk.id
AND shop_tbl_artikel.categorieid_2 = shop_tbl_onderdeelmerk.id
AND shop_tbl_onderdeelmerk.supercategorieid = shop_tbl_onderdeeltype.id
AND shop_tbl_automerk.id = '344'
AND shop_tbl_onderdeeltype.id = '1444'
AND isaanbieding = '0'
ORDER BY autotype, shop_tbl_artikel.omschrijving ");
Poging 3:
SELECT shop_tbl_artikel.id, shop_tbl_artikel.artikelsoortid, shop_tbl_artikel.categorieid_1, shop_tbl_artikel.categorieid_2, shop_tbl_artikel.oenummer, shop_tbl_artikel.artikelnummer, shop_tbl_artikel.brutoprijs, shop_tbl_artikel.omschrijving, shop_tbl_artikel.foto, shop_tbl_artikel.foto_groot, shop_tbl_artikel.bouwjaar, shop_tbl_artikel.isaanbieding, shop_tbl_automerk.id, shop_tbl_automerk.categorienaam AS automerk, shop_tbl_autotype.id, shop_tbl_autotype.categorienaam AS autotype, shop_tbl_onderdeelmerk.id, shop_tbl_onderdeelmerk.categorienaam AS onderdeelmerk, shop_tbl_onderdeeltype.id, shop_tbl_onderdeeltype.categorienaam AS onderdeeltype
FROM shop_tbl_artikel
INNER JOIN shop_tbl_categorie AS shop_tbl_autotype ON shop_tbl_artikel.categorieid_1 = shop_tbl_autotype.id
INNER JOIN shop_tbl_categorie AS shop_tbl_automerk ON shop_tbl_autotype.supercategorieid = shop_tbl_automerk.id
INNER JOIN shop_tbl_categorie AS shop_tbl_onderdeelmerk ON shop_tbl_artikel.categorieid_2 = shop_tbl_onderdeelmerk.id
INNER JOIN shop_tbl_categorie AS shop_tbl_onderdeeltype ON shop_tbl_onderdeelmerk.supercategorieid = shop_tbl_onderdeeltype.id
WHERE shop_tbl_automerk.id = '$automerkid' AND shop_tbl_onderdeeltype.id = '$onderdeelid' AND isaanbieding = '0'
ORDER BY autotype, shop_tbl_artikel.omschrijving ");
Help?