hallo,
Ik ben bezig met een pdo script. Ik wil gegevens uit vier verschillende tabellen selecteren en deze op een scherm tonen, maar sorteren bij dag. alle tabellen hebben de row dag. Ik wil alle informatie uit deze tabellen selecteren en per tabel een rij maken en deze sorteren op dag.
dus bijvoorbeeld:
Dag 1
Reis: Den Haag - Rotterdam
Overnachting: Bluesky - Rotterdam
Waarom heb je in reis, overnachting en activiteit neit de id staan uit de dag tabel ipv de dag zelf ?
ZOals het nu staat zie ik ook de meerwaarde van de dagtabel niet in
Oké daar heb je een punt, maar als ik de dagtabel weglaat, hoe zou ik dan die andere drie tabellen kunnen combineren en het resultaat krijgen wat ik graag wil
Ik snap het niet helemaal, volgens mij met een join voeg je gegevens uit verschillende tabellen samen en maak je er een rij met gegevens van, dit wil ik niet ik wil de rijen uit verschillende tabellen onder elkaar zetten gesorteerd op dag waarbij soms een rij niet voorkomt:
Dag 1:
reis: Den Haag - Rotterdam
overnachting: bluesky hostel
Dag 2:
overnachting: bluesky hostel
activiteit: bezoek euromast
Dag 3:
reis: Rotterdam - utrecht
overnachting: Sky Hostel
joins zijn inderdaad het juiste stukje gereedschap. Het gaat er niet alleen om dat ze gegevens samenvoegen maar ook dat de juiste gegevens bij elkaar komen te staan. Hoe je ze uiteindelijk op het scherm weergeeft (naast elkaar of onder elkaar) maakt niets uit.
Wat ik me afvraag.. waarom staat bij dag twee de overnachting boven en niet onder?
In het kort zit het volgens mij zo:
je hebt reizen van een aantal dagen. in die dagen worden activiteiten georganiseerd.
Die overnachtingen is een beetje hoe je het wil. Je kunt die ook als activiteit zien.
van de dagen en van de activiteiten moet je zorgen dat je de volgorde kunt bepalen.
Je zou bijvoorbeeld voor de dagen gewoon een datum kunnen pakken of een nummer.
voor de activiteiten zou je een nummer of een tijdstip kunnen pakken
indeling:
REIZEN
-id, INT PRIMARY KEY, AUTO INCREMENT
-omschrijving, VARCHAR 255
-datum, DATE
DAGEN:
-id, INT PRIMARY KEY, AUTO INCREMENT
-reis_id, INT INDEX
-dag_nr INT
ACTIVITEITEN
-id, INT PRIMARY KEY, AUTO INCREMENT
-dag_id INT INDEX
-omschrijving, VARCHAR 255
-tijd TIME
En hij toont alle dagen met alle drie de lijnen en ik wil graag als er bijvoorbeeld geen treinreis is dat hij die niet toont
Dit is mijn code:
$sql_activiteit= "SELECT
dagen.dag,
reisdagen.beginplaats,
reisdagen.eindbestemming,
overnachten.hostel,
overnachten.adres,
activiteit.plaats,
activiteit.titel
FROM
`dagen`
LEFT JOIN `reisdagen` ON reisdagen.dag = dagen.id
LEFT JOIN `overnachten` ON overnachten.dag = dagen.id
LEFT JOIN `activiteit` ON activiteit.dag = dagen.id
ORDER BY
dagen.id ASC";
$stmt_activiteit = $pdo->prepare($sql_activiteit);
$stmt_activiteit->bindParam(':dag', $dag, PDO::PARAM_STR);
$stmt_activiteit->execute();
$result_activiteit = $stmt_activiteit->fetchAll();
foreach($result_activiteit as $row_activiteit){
echo "<tr><td class='danger' COLSPAN='3'><label><h3>Dag: ".$row_activiteit['dag']."</h3></label></td></tr>