naar meerdere id's in andere tabel verwijzen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Karin php

Karin php

29/08/2009 15:58:00
Quote Anchor link
Hallo, ik wil in een tabel naar meerdere id's in een andere tabel verwijzen. Bijvoorbeeld een tabel met recepten, en een tabel met ingredienten. In het veld ingredienten in de tabel 'recepten' moeten meerder id's komen te staan die verwijzen naar records in de tabel 'ingredienten'. bijvoorbeeld het recept voor frisse salade heeft bij ingredienten de waarden 1, 5, 7, 12 die corresponderen met de id's voor sla, tomaat, komkommer en mais in de tabel 'ingredienten'. Met komma's scheiden werkt niet, dan wordt alleen de eerste genoemd. Hoe kan dit wel?
Gewijzigd op 01/01/1970 01:00:00 door Karin php
 
PHP hulp

PHP hulp

28/12/2024 04:41:30
 
Mark L

Mark L

29/08/2009 16:27:00
Quote Anchor link
Voor wat ik heb gehoord is een array in een database-cel zetten niet handig. Om dit op te lossen zou ik een nieuwe tabel maken, waarin ingredient-id én recept id instaat.

Zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
r_id | i_id
3    | 1
3    | 7
5    | 4


Ik weet niet of je hier ook nog een 'gewoon' id (als Primary key) bij moet zetten. Ook zou je op deze manier erbij kunnen zetten hoeveel gram o.i.d.
 
Martijn B

Martijn B

29/08/2009 16:30:00
Quote Anchor link
Je wil dus: 1 recepten meerdere ingredienten

De beste manier is een koppel tabel maken.
De database structuur ziet er dan b.v. zo uit:

------------
Tabel: recepten
receptid (INT, Primary key, auto_increment)
naam (VARCHAR)

------------
Tabel: recepten_naar_ingredienten
receptid (INT, Primary key)
ingredientid (INT, Primary key)

------------
Tabel: ingredienten
ingredientid (INT, Primary key, auto_increment)
naam (VARCHAR)
 
Karin php

Karin php

29/08/2009 19:05:00
Quote Anchor link
Maar is een array wel mogelijk?

die koppeltabel snap ik niet. hoe zorg je dan dat je salade krijgt die niet alleen uit sla bestaat?
 
Eddy E

Eddy E

30/08/2009 09:49:00
Quote Anchor link
Met LEFT JOIN selecteer je alle ingredienten-rijen (en nog wat gegevens) die in dat product zitten.

Je hebt je product-id?
Die staan ook in die tabel.
 
Karin php

Karin php

31/08/2009 01:28:00
Quote Anchor link
maar hoe selecteer je dan meerdere rijen? kan iemand een voorbeeld geven.
 
Martijn B

Martijn B

03/09/2009 21:50:00
Quote Anchor link
Beetje laat, misschien heeft iemand er wat aan.

Selecteer de ingrediënten van recept 1.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT ingredientid, naam
FROM ingredienten i,
recepten_naar_ingredienten rni
WHERE rni.receptid = 1
AND i.ingredientid = rni.ingredientid


In de koppel tabel (recepten_naar_ingredienten) zit dan b.v. :

-------------------------
receptid | ingredientid
1 | 1
1 | 2
1 | 3
2 | 1
2 | 4

De eerste kolom is het recept id en de 2e het ingrediënt id.
Recept 1 en 2 bevatten beiden hetzelfde ingrediënt namelijk het ingrediënt met id 1.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Jan Koehoorn

Jan Koehoorn

03/09/2009 21:58:00
Quote Anchor link
Martijn! schreef op 03.09.2009 21:50:
Recept 1 en 2 bevatten beiden hetzelfde ingrediënt namelijk het recept met id 1.

... namelijk het ingrediënt met id 1
 



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.