Ik heb het volgende:

1 tabel met -> Plaatsnamen (event_locations)
| loc_id | loc_name |

1 tabel met -> Reizen (events)
| p_id | p_name |

Nu wil ik bijvoorbeeld 1 reis koppelen aan meerdere plaatsen, maar weet mijn god niet hoe ik dat voor elkaar moet krijgen..

Iemand suggesties met wat voor SQL-opdracht ik dit voor elkaar kan krijgen? Of moet ik een extra tabel aanmaken?

1 reis koppelen aan 1 plaats dat lukt me natuurlijk wel, maar dit gaat dieper dan ik dacht.
Misschen moet je eens even gaan Normaliseren. Dan kom je er vanzelf achter dat je, om een reis aan meerdere plaatsen te koppelen, een koppeltabel moet gebruiken.

Dan kom je op een tabel met p_id en loc_id. Meer hoeft niet, want je hoeft een combinatie tussen reis en locatie niet vaker dan eenmaal te maken.

Elwin
De syntax is:

SELECT veld1, veld2, etc. FROM tabel WHERE ...

dat zal iets worden als: SELECT p_id, loc_id FROM ...

kijk anders ook eens op W3Schools SQL Tutorial
Het is inderdaad zo dat ik een koppeltabel moet maken, die heb ik gemaakt, maar nou kom ik er niet uit wat voor query ik moet gebruiken..

En in mijn boek dat ik heb gaan ze hier niet op in :S

Hoe kan ik een koppeltabel laten communiceren met de andere 2 tabellen?
Het ligt eraan hoe je het wilt hebben. Als je het vanuit reis wilt bekijken is het zo:
<?php
$reis = 38; // De reis die je wilt bekijken

$sql = "SELECT locatie.loc_name
FROM koppeltabel, event_locations AS locatie
WHERE koppeltabel.loc_id = locatie.loc_id
AND koppeltabel.p_id = ".$reis;

$query = mysql_query($sql);

$num = mysql_num_rows($query);

if (empty($num))
{
echo "Geen locaties aan deze reis gekoppeld";
} else {
while($result = mysql_fetch_row($query))
{
echo $result[0]."<br/>\n";
}
}
?>

Nu krijg je dus een lijst van de locaties die bij een reis horen. Wil je echter alle reizen laten zien die op een lokatie komen, dan is het zoiets:
<?php
$locatie = 5; // De locatie waarvan je het wilt hebben

$sql = "SELECT events.p_name
FROM koppeltabel, events
WHERE koppeltabel.p_id = events.p_id
AND koppeltabel.loc_id = ".$locatie;

$query = mysql_query($sql);

$num = mysql_num_rows($query);

if (empty($num))
{
echo "Geen reizen aan deze locatie gekoppeld";
} else {
while($result = mysql_fetch_row($query))
{
echo $result[0]."<br/>\n";
}
}
?>

Elwin

Reageren