SQL JOIN

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter  Flos

Peter Flos

14/09/2014 22:07:36
Quote Anchor link
Avond,

Ik heb de volgende tabel:

Producten

Structuur:
ID
Naam
Categorie

Ik heb nog een tabel:
Categorie

Structuur:
ID
Naam

En nog een:
Categorie_Product

Structuur:
ID
ProductID
CategorieID

Wat er wordt gedaan:
Er wordt gekeken welk ID er in de link staat, pak als voorbeeld even 1. Nu staat in de tabel Producten een categorie, wat er nu gebeurd is dat er daar uit wordt geselecteerd. Maar, enkele producten moeten in meerdere categorieën kunnen, dus elke andere categorie staat daarin gekoppeld. Je krijgt dus (vb)

Producten:
1 (ID)
PHPHulp Boek (Naam)
1 (Cat)

Categorie:
1 (ID)
Boeken (Naam)
2 (ID)
PHP (Naam)

Product_Categorie:
1 (ID)
1 (ProductID)
2 (CatID)

Nu moet dus ook het product van Product_Categorie komen te staan.
Echter komen er maximaal 6 producten op een pagina, waarna je met Volgende en Vorige een pagina vooruit en Achteruit kan gaan. Hoe doe ik dat? Ik dacht aan een JOIN.

Groet,
Peter
 
PHP hulp

PHP hulp

26/04/2024 00:48:32
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/09/2014 22:26:24
Quote Anchor link
Wat je hier hebt is many to many relatie, dus de kolom voor de categorie kan uit de tabel producten.
Daar heb je de link tabel voor, ook al behoort een product maar tot één categorie komt die in de link tabel.

Dan kan je de kolom ID uit Product_Categorie verwijderen en een PK zetten op beide anderen.

Dan met deze query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT p.id,
    p.product_naam
FROM
    producten p
JOIN
    Producten_Categorie pc
    ON p.id = pc.ProductID
WHERE
    pc.CatID = 1
LIMIT 0, 6
Gewijzigd op 14/09/2014 22:27:00 door Ger van Steenderen
 
Peter  Flos

Peter Flos

15/09/2014 18:38:01
Quote Anchor link
Top, bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.