Left join werkt niet naar behoren
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
//vakanties
$start = date('Y-m-d', $_GET['start']);
$end = date('Y-m-d', $_GET['end']);
$sql = "SELECT mw_vakantie.id as id, mw_gegevens_id as title, mw_vakantie.reden as name, date_format(begin, '%Y-%m-%dCET%H:%i:%s+02:00') as start, date_format(eind, '%Y-%m-%dCET%H:%i:%s+02:00') as end
FROM mw_vakantie LEFT JOIN mw_gegevens USING (mw_gegevens_id) WHERE begin BETWEEN '{$start}' AND '{$end}'";
$result = mysqli_query($connection, $sql);
if (mysqli_num_rows($result) > 0) {
while ($booking = mysqli_fetch_assoc($result)) {
$booking['color'] = '#FF4500';
$bookings_array[] = $booking;
}
}
?>
//vakanties
$start = date('Y-m-d', $_GET['start']);
$end = date('Y-m-d', $_GET['end']);
$sql = "SELECT mw_vakantie.id as id, mw_gegevens_id as title, mw_vakantie.reden as name, date_format(begin, '%Y-%m-%dCET%H:%i:%s+02:00') as start, date_format(eind, '%Y-%m-%dCET%H:%i:%s+02:00') as end
FROM mw_vakantie LEFT JOIN mw_gegevens USING (mw_gegevens_id) WHERE begin BETWEEN '{$start}' AND '{$end}'";
$result = mysqli_query($connection, $sql);
if (mysqli_num_rows($result) > 0) {
while ($booking = mysqli_fetch_assoc($result)) {
$booking['color'] = '#FF4500';
$bookings_array[] = $booking;
}
}
?>
In het tabel mw_vakanties staat een regel met als mw_gegevens_id met als waarde 195
In het tabel mw_gegevens staat een regel met als mw_gegevens_id met als waarde 195 en mw_gegevens_vnaam met de waarde Jasper
Als ik bovenstaande query gebruik krijg ik netjes de waarde 195 terug. Maar zodra ik in de query mw_gegevens_id vervang door mw_gegevens_vnaam, dan wordt er geen waarde terug gegeven.
Wat ik ervan begrijp is dat de 2 tabellen niet samengevoegd. Ik kan me alleen niet meer bedenken wat ik fout heb gedaan.
Hopelijk kunnen jullie mij op weg helpen.
- Ariën -:
Typfout uit topictitel gehaald.
Gewijzigd op 07/12/2016 20:26:45 door - Ariën -
Op tactische plekken eens op enter drukken, komt de leesbaarheid ten goede.
Verder zou ik de query niet in php ontwikkelen maar eerst direct aan de database voeren (bijvoorbeeld met PHPMyAdmin of HeidiSQL)
Je krijgt dan ook foutmeldingen te zien, want daar doe je hier nu niets mee.
"Tabel" is trouwens niet onzijdig. Je mag de "de" als lidwoord gebruiken.
http://woordenlijst.org/#/?q=tabel
Gewijzigd op 07/12/2016 09:53:11 door Ivo P
Quote:
mw_gegevens_vnaam
Komt die dan in beide tabellen voor? En als dat al zo is, lijkt mij dat tevens een ontwerpfout. Het lijkt mij onverstandig om twee tabellen op grond van tekst aan elkaar te fietsen (tenzij je niet anders kan).
Quote:
PHPMyAdmin of HeidiSQL
Of gewoon een prompt ;).
Ik zet hem ook als mw_gegevens.mw_gegevens_vnaam in de query.