André Laugks: probleme beim auslesen aus mehreren tabellen

Beitrag lesen

Hallo!

http://www.munds.at/mysql_dump.txt

Bitte den darin enthaltenen Daten keine allzugrosse Beachtung schenken, ist noch in der Testphase :)

Mit so einem Dump kann man sich einen besseren Überblick verschaffen.

Wieso funktioniert Deine SQL-Abfrage nicht? In den Tabellen "best_offen" und "best_ausgeliefert" steht in den Spalten referenz_nr keine Werte. In der Spalte "referenz_nr" der Tabelle "best_beantragt" gibt es ein paar Datenwerte. Was soll Dir MySQL nun anzeigen? MySQL kann halt Datenwerte mit NICHTS nicht verbinden. Den JOIN den  Du angewendet hast, nennt man EQUI JOIN.

Für so etwas gibt es den LEFT JOIN oder RIGHT JOIN. MySQL zeigt hier auch Zeilen aus der linken Tabelle an, für die es in der rechten Tabelle keine Übereinstimmung gibt. Für Datenwerte, für die es in der rechten Tabelle keine Übereinstimmung gibt, wird NULL angezeigt. Bei einem RIGHT JOIN ist das genau umgekehrt. In einem MySQL-Buch wird Dir das sicherlich mit Beispielen besser erklärt, als ich das hier kann.

// LEFT JOIN
Links --> Rechts
best_beantragt --> best_offen --> best_ausgeliefert

FROM best_beantragt AS a LEFT JOIN best_offen AS b ON (a.interne_id>0 OR b.interne_id>0) LEFT JOIN best_ausgeliefert AS c ON (c.interne_id>0)

Man schaut auf die Tabellen dem SQL-Statment nach entlang von links nach rechts.

SELECT
    a.referenz_nr AS ref_nr_1,
    b.referenz_nr As ref_nr_2,
    c.referenz_nr As ref_nr_3
FROM
    best_beantragt AS a LEFT JOIN best_offen AS b ON (a.interne_id>0 OR b.interne_id>0)
    LEFT JOIN best_ausgeliefert AS c ON (c.interne_id>0)
WHERE
    a.referenz_nr = "abcdef
    OR
    b.referenz_nr = "abcdef"
    OR
    c.referenz_nr = "abcdef";

In den Klammern "(a.interne_id>0 OR b.interne_id>0)" werden sonst Beziehungen zwischen den Tabellen definiert. Da ich keine gesehen habe, habe ich es mal mit "interne_id>0" gemacht.

Wenn Du als OS Windows einsetzt, kann ich Dir MySQL-Front an Dein Herz legen. Für den lokalen Gebauch weit aus mehr geeignet als phpMyAdmin.
http://mysqlfront.venturemedia.de/index.php?act=ST&f=2&t=328

MfG, André Laugks

--
L-Andre @ gmx.de