database tabellen samenvoegen
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
Dag 2
Overnachting: Bluesky - Rotterdam
Activiteit: Bezoek Euromast - Rotterdam
Dit zijn mijn tabellen:
Dag:
- id
- dag
Reis
- id
- dag
- beginplaats
- eindbestemming
Overnachting
- id
- dag
- Hostel
- plaats
Activiteit
- id
- dag
- titel
- plaats
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
http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Een optie zou kunnen zijn:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
SELECT
dag.dag,
reis.beginplaats,
reis.eindbestemmeing
FROM
`dag`
LEFT JOIN `reis` ON reis.dag = dag.id
ORDER BY
dag.id ASC
dag.dag,
reis.beginplaats,
reis.eindbestemmeing
FROM
`dag`
LEFT JOIN `reis` ON reis.dag = dag.id
ORDER BY
dag.id ASC
Uiteraard ook afhankelijk van hoe je tabellen gekoppeld zijn. Vul je bijvoorbeeld in reis.dag het dag.id of dag.dag in.
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
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
Gewijzigd op 25/10/2014 03:16:03 door Frank Nietbelangrijk
Dag: 1
Sluiswachterstraat 71 's-Gravenzande Genevè
Geneva Youth Hostel Rue Rothschild 30, 1202 Genève (GE)
Geneve trein
Dag: 1
Sluiswachterstraat 71 's-Gravenzande Genevè
Geneva Youth Hostel Rue Rothschild 30, 1202 Genève (GE)
Geneve bus
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>
<tr><td><img src='images/50439.png'></td><td>".$row_activiteit['beginplaats']."</td><td>".$row_activiteit['eindbestemming']."</td></tr>
<tr><td><img src='images/slapen.png'></td><td>".$row_activiteit['hostel']."</td><td>".$row_activiteit['adres']."</td></tr>
<tr><td><img src='images/voeten.png'></td><td>".$row_activiteit['plaats']."</td><td>".$row_activiteit['titel']."</td></tr>
";
}
Gewijzigd op 25/10/2014 11:01:21 door Sanne Zuidema
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$vorige_dag = '';
foreach($result_activiteit as $row_activiteit)
{
if($vorige_dag != $row_activiteit['dag'])
{
$vorige_dag = $row_activiteit['dag'];
echo "<tr><td class='danger' COLSPAN='3'><label><h3>Dag: ".$row_activiteit['dag']."</h3></label></td></tr>";
}
echo "<tr><td><img src='images/50439.png'></td><td>".$row_activiteit['beginplaats']."</td><td>".$row_activiteit['eindbestemming']."</td></tr>
<tr><td><img src='images/slapen.png'></td><td>".$row_activiteit['hostel']."</td><td>".$row_activiteit['adres']."</td></tr>
<tr><td><img src='images/voeten.png'></td><td>".$row_activiteit['plaats']."</td><td>".$row_activiteit['titel']."</td></tr>";
}
?>
$vorige_dag = '';
foreach($result_activiteit as $row_activiteit)
{
if($vorige_dag != $row_activiteit['dag'])
{
$vorige_dag = $row_activiteit['dag'];
echo "<tr><td class='danger' COLSPAN='3'><label><h3>Dag: ".$row_activiteit['dag']."</h3></label></td></tr>";
}
echo "<tr><td><img src='images/50439.png'></td><td>".$row_activiteit['beginplaats']."</td><td>".$row_activiteit['eindbestemming']."</td></tr>
<tr><td><img src='images/slapen.png'></td><td>".$row_activiteit['hostel']."</td><td>".$row_activiteit['adres']."</td></tr>
<tr><td><img src='images/voeten.png'></td><td>".$row_activiteit['plaats']."</td><td>".$row_activiteit['titel']."</td></tr>";
}
?>
Gewijzigd op 25/10/2014 13:50:24 door Frank Nietbelangrijk
Dag: 1
Sluiswachterstraat 71 's-Gravenzande Genevè
Geneva Youth Hostel Rue Rothschild 30, 1202 Genève (GE)
Geneve trein
Sluiswachterstraat 71 's-Gravenzande Genevè
Geneva Youth Hostel Rue Rothschild 30, 1202 Genève (GE)
Geneve bus
Laat eens zien wat je nu hebt?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
$vorige_dag = '';
$sql_activiteit= "SELECT
dagen.dag,
reisdagen.reisdagen_dag,
reisdagen.reisdagen_status,
reisdagen.beginplaats,
reisdagen.eindbestemming,
overnachten.overnachten_dag,
overnachten.overnachten_status,
overnachten.hostel,
overnachten.adres,
activiteit.activiteit_dag,
activiteit.activiteit_status,
activiteit.plaats,
activiteit.titel
FROM
`dagen`
LEFT JOIN `reisdagen` ON reisdagen.reisdagen_dag = dagen.id
LEFT JOIN `overnachten` ON overnachten.overnachten_dag = dagen.id
LEFT JOIN `activiteit` ON activiteit.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();
$vorige_dag = '';
foreach($result_activiteit as $row_activiteit)
{
$activiteit = $row_activiteit['dag'];
if($vorige_dag != $row_activiteit['dag'])
{
$vorige_dag = $row_activiteit['dag'];
echo "<tr><td class='danger' COLSPAN='3'><label><h3>Dag: ".$row_activiteit['dag']."</h3></label></td></tr>";
}
$reisdagen_dag = '';
if($row_activiteit['reisdagen_dag'] != $reisdagen_dag)
{
echo "<tr><td><img src='images/50439.png'></td><td>".$row_activiteit['beginplaats']."</td><td>".$row_activiteit['eindbestemming']."</td></tr>";
}
$overnachten_dag = '';
if($row_activiteit['overnachten_dag'] != $overnachten_dag)
{
echo "<tr><td><img src='images/slapen.png'></td><td>".$row_activiteit['hostel']."</td><td>".$row_activiteit['adres']."</td></tr>";
}
$activiteit_dag = '';
if($row_activiteit['activiteit_dag'] != $activiteit_dag)
{
echo "<tr><td><img src='images/voeten.png'></td><td>".$row_activiteit['plaats']."</td><td>".$row_activiteit['titel']."</td></tr>";
}
}
?>
$vorige_dag = '';
$sql_activiteit= "SELECT
dagen.dag,
reisdagen.reisdagen_dag,
reisdagen.reisdagen_status,
reisdagen.beginplaats,
reisdagen.eindbestemming,
overnachten.overnachten_dag,
overnachten.overnachten_status,
overnachten.hostel,
overnachten.adres,
activiteit.activiteit_dag,
activiteit.activiteit_status,
activiteit.plaats,
activiteit.titel
FROM
`dagen`
LEFT JOIN `reisdagen` ON reisdagen.reisdagen_dag = dagen.id
LEFT JOIN `overnachten` ON overnachten.overnachten_dag = dagen.id
LEFT JOIN `activiteit` ON activiteit.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();
$vorige_dag = '';
foreach($result_activiteit as $row_activiteit)
{
$activiteit = $row_activiteit['dag'];
if($vorige_dag != $row_activiteit['dag'])
{
$vorige_dag = $row_activiteit['dag'];
echo "<tr><td class='danger' COLSPAN='3'><label><h3>Dag: ".$row_activiteit['dag']."</h3></label></td></tr>";
}
$reisdagen_dag = '';
if($row_activiteit['reisdagen_dag'] != $reisdagen_dag)
{
echo "<tr><td><img src='images/50439.png'></td><td>".$row_activiteit['beginplaats']."</td><td>".$row_activiteit['eindbestemming']."</td></tr>";
}
$overnachten_dag = '';
if($row_activiteit['overnachten_dag'] != $overnachten_dag)
{
echo "<tr><td><img src='images/slapen.png'></td><td>".$row_activiteit['hostel']."</td><td>".$row_activiteit['adres']."</td></tr>";
}
$activiteit_dag = '';
if($row_activiteit['activiteit_dag'] != $activiteit_dag)
{
echo "<tr><td><img src='images/voeten.png'></td><td>".$row_activiteit['plaats']."</td><td>".$row_activiteit['titel']."</td></tr>";
}
}
?>
Gewijzigd op 26/10/2014 13:38:05 door Sanne Zuidema
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
$sql_activiteit= "SELECT
*
FROM
dagen
ORDER BY
dag ASC";
$stmt_activiteit = $pdo->prepare($sql_activiteit);
$stmt_activiteit->execute();
$result_activiteit = $stmt_activiteit->fetchAll();
foreach($result_activiteit as $row_activiteit)
{
echo "<label><h2>Dag: ".$row_activiteit['dag']."</h2></label>";
echo "<br/>";
$dag = $row_activiteit['dag'];
echo "<table class='table responsive personal' style=' margin:auto; margin-top:10px;'>";
$sql_reis= "SELECT
*
FROM
reisdagen
WHERE reisdagen_dag = :dag
ORDER BY
reisdagen_dag ASC";
$stmt_reis = $pdo->prepare($sql_reis);
$stmt_reis->bindParam(':dag', $dag, PDO::PARAM_STR);
$stmt_reis->execute();
$result_reis = $stmt_reis->fetchAll();
foreach($result_reis as $row_reis)
{
echo "<tr><td data-header='Plaats'>".$row_reis['beginplaats']."</td></tr>";
}
$sql_hotel= "SELECT
*
FROM
overnachten
WHERE overnachten_dag = :dag
ORDER BY
overnachten_dag ASC";
$stmt_hotel = $pdo->prepare($sql_hotel);
$stmt_hotel->bindParam(':dag', $dag, PDO::PARAM_STR);
$stmt_hotel->execute();
$result_hotel = $stmt_hotel->fetchAll();
foreach($result_hotel as $row_hotel)
{
echo "<tr><td data-header='Plaats'>".$row_hotel['hostel']."</td></tr>";
}
$sql_activiteit= "SELECT
*
FROM
activiteit
WHERE activiteit_dag = :dag
ORDER BY
activiteit_dag 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 data-header='Plaats'>".$row_activiteit['titel']."</td></tr>";
}
echo "</table>";
}
?>
$sql_activiteit= "SELECT
*
FROM
dagen
ORDER BY
dag ASC";
$stmt_activiteit = $pdo->prepare($sql_activiteit);
$stmt_activiteit->execute();
$result_activiteit = $stmt_activiteit->fetchAll();
foreach($result_activiteit as $row_activiteit)
{
echo "<label><h2>Dag: ".$row_activiteit['dag']."</h2></label>";
echo "<br/>";
$dag = $row_activiteit['dag'];
echo "<table class='table responsive personal' style=' margin:auto; margin-top:10px;'>";
$sql_reis= "SELECT
*
FROM
reisdagen
WHERE reisdagen_dag = :dag
ORDER BY
reisdagen_dag ASC";
$stmt_reis = $pdo->prepare($sql_reis);
$stmt_reis->bindParam(':dag', $dag, PDO::PARAM_STR);
$stmt_reis->execute();
$result_reis = $stmt_reis->fetchAll();
foreach($result_reis as $row_reis)
{
echo "<tr><td data-header='Plaats'>".$row_reis['beginplaats']."</td></tr>";
}
$sql_hotel= "SELECT
*
FROM
overnachten
WHERE overnachten_dag = :dag
ORDER BY
overnachten_dag ASC";
$stmt_hotel = $pdo->prepare($sql_hotel);
$stmt_hotel->bindParam(':dag', $dag, PDO::PARAM_STR);
$stmt_hotel->execute();
$result_hotel = $stmt_hotel->fetchAll();
foreach($result_hotel as $row_hotel)
{
echo "<tr><td data-header='Plaats'>".$row_hotel['hostel']."</td></tr>";
}
$sql_activiteit= "SELECT
*
FROM
activiteit
WHERE activiteit_dag = :dag
ORDER BY
activiteit_dag 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 data-header='Plaats'>".$row_activiteit['titel']."</td></tr>";
}
echo "</table>";
}
?>