Tabellen koppelen en samenvoegen

Status
Niet open voor verdere reacties.

Carmelo

Nieuwe gebruiker
Lid geworden
24 sep 2008
Berichten
2
Hallo,

Ik probeer via een aantal tutorials een dynamische RSS feed te maken.
Hiervoor heb ik bepaalde gegevens nodig uit de database.
Deze staan echter in meerdere tabellen en krijg het maar niet voor elkaar deze op de juiste manier op te vragen en samen te voegen.

De tabellen met bijbehorend benodigde kolommen zijn:

products
|_ products_id
|_ products_image
|_ products_price
|_ products_date_added

products_description
|_ products_id
|_ products_name
|_ products_description

products_to_categories
|_ products_id
|_ categories_id

categories_description
|_ categories_id
|_ categories_name

Wat ik graag wil is het volgende;

Stap - 1 - Haal alle producten uit de tabel "products" waarbij de kolom "products_status" de waarde "1" heeft.

Stap - 2 - Voeg hier aan toe de waarden uit de tabellen "products_description" en "products_to_categories" waarbij de resultaten "products_id" overeenkomen met de opgehaalde product_id's in Stap - 1.

Stap - 3 - Voeg hier aan toe de waarden uit de "categories_name" van de tabel "categories_description", waarbij de waarde "categories_id" uit de tabel "categories_to_description" overeen komen met de waarde "categories_id" uit de tabel "products_to_categories".

Het resultaat welke ik hiermee probeer te krijgen zou dan moeten bestaan uit:

1 - Product ID
2 - Product plaatje
3 - Product prijs
4 - Product datum
5 - Product status
6 - Product naam
7 - Product omschrijving
8 - Categorie ID
9 - Categorie naam

Ik heb al vele dingen geprobeerd via voorbeelden van JOIN, INNER JOIN, WHERE, UNION, etc., maar mijn kennis van MySQL en php is helaas onvoldoende om hier een juiste query voor te maken.

Ik zou het zéér op prijs stellen iemand mij hierover zou kunnen adviseren.
Alle hulp is van harte welkom.
 
De meeste items kunnen via product ID. Overigens heeft je tabel volgens je overzicht geen: "product_status" Ik neem aan dat je die vergeten bent.

Het eerste deel is

[sql]
SELECT pr.ID, pr.plaatje, pr.prijs , pr.datum, pr.status, prd.naam, prd.omsch, p2c.cat INNER JOIN prd ON pr.ID = prd.ID INNER JOIN p2c ON pr.ID = p2c.ID WHERE pr.status = 1
[/sql]

De uitkomst van deze query kun je weer joinen via een tweede select. Hoe de tweede select ook weer gaat zou ik op moeten zoeken, ik heb dat niet zo paraat uit mijn hoofd.
 
Beste Wampier,

Hartelijk dank voor je reactie!
Was deze idd vergeten te vermelden.
Ik heb zojuist een oplossing gevonden via een tweede forum waar ik dezelfde vraag had gepost.

$sql = "SELECT p1.products_id, p1.products_image, p1.products_price, p1.products_date_added, p2.products_name, p2.products_description, p3.categories_id, p4.categories_name
FROM products as p1
INNER JOIN products_description as p2 ON p1.products_id = p2.products_id
INNER JOIN products_to_categories as p3 ON p1.products_id = p3.products_id
INNER JOIN categories_description as p4 ON p3.categories_id = p4.categories_id
WHERE p1.products_status = "1";

Deze doet precies wat ik bedoel.
Nogmaals bedankt voor je reactie!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan