Bei der Suche über 3 Tabellen werden die Daten aus den 3 Tabellen auch korrekt gefunden.
Bei der Rechnungsadresse werden die entsprechenden Felder aus der Tabelle „kunde“ gezeigt.
So weit so gut.
Nun gibt es noch eine 4. Tabelle für alternative Lieferadressen. Ist zu einer Bestellung eine andere, alternative Lieferadresse (adresse2) eingetragen, soll diese, neben der Rechnungsadresse auch eingeblendet werden. Bei der Suche über 4 Tabellen werden nach meinem nachfolgenden Ansatz jedoch nur noch Daten gefunden wenn in „adresse2“ etwas vorhanden ist. Gibt es nur eine Rechnungsadresse und keine zusätzliche Lieferadresse wird nichts angezeigt.
Ich habe mir daher überlegt wenn ich schreibe
LEFT JOIN `adresse2` ON `bestellung`
kann ja auch nichts gefunden werden wenn es keine alternative Adresse gibt.
Schreibe ich dagegen
OR LEFT JOIN `adresse2` ON `bestellung`
kommt Fehlermeldung, soll noch mal im Manual nachlesen …..
Meine Frage – wie schreibe ich mein Query richtig, das nur Daten gezeigt werden, wenn in Tabelle „adresse2“ auch welche für diese Bestellung vorhanden sind?
Bei der Rechnungsadresse werden die entsprechenden Felder aus der Tabelle „kunde“ gezeigt.
PHP:
# Suche 1 über 3 Tabellen (bestellung + kunde + lieferant)
$sql = mysql_query("SELECT `bestellung`.*, `kunde`.*, `lieferant`.*
FROM `bestellung`
LEFT JOIN `kunde` ON `bestellung`.`user_id` = `kunde`.`user_id`
LEFT JOIN `lieferant` ON `kunde`.`extra_field_1` = `lieferant`.`lie_nr`
WHERE `bestellung`.`order_id` = '{$order_id}'");
$row = mysql_fetch_array($sql) or die(mysql_error());
So weit so gut.
Nun gibt es noch eine 4. Tabelle für alternative Lieferadressen. Ist zu einer Bestellung eine andere, alternative Lieferadresse (adresse2) eingetragen, soll diese, neben der Rechnungsadresse auch eingeblendet werden. Bei der Suche über 4 Tabellen werden nach meinem nachfolgenden Ansatz jedoch nur noch Daten gefunden wenn in „adresse2“ etwas vorhanden ist. Gibt es nur eine Rechnungsadresse und keine zusätzliche Lieferadresse wird nichts angezeigt.
Ich habe mir daher überlegt wenn ich schreibe
LEFT JOIN `adresse2` ON `bestellung`
kann ja auch nichts gefunden werden wenn es keine alternative Adresse gibt.
PHP:
# Suche 2 über 4 Tabellen (bestellung + kunde + lieferant + adresse2)
$sql = mysql_query("SELECT `bestellung`.*, `kunde`.*, `lieferant`.*, `adresse2`.*
FROM `bestellung`
LEFT JOIN `kunde` ON `bestellung`.`user_id` = `kunde`.`user_id`
LEFT JOIN `lieferant` ON `kunde`.`extra_field_1` = `lieferant`.`lie_nr`
LEFT JOIN `adresse2` ON `bestellung`.`user_info_id` = `adresse2`.`user_info_id`
WHERE `bestellung`.`order_id` = '{$order_id}'");
$row = mysql_fetch_array($sql) or die(mysql_error());
Schreibe ich dagegen
OR LEFT JOIN `adresse2` ON `bestellung`
kommt Fehlermeldung, soll noch mal im Manual nachlesen …..
Meine Frage – wie schreibe ich mein Query richtig, das nur Daten gezeigt werden, wenn in Tabelle „adresse2“ auch welche für diese Bestellung vorhanden sind?