Hallo,
Ich hoffe, mein Anliegen schneidet noch php,
nein, keine Spur.
Ich versuche zwei Tabellen miteinander zu verknüpfen mit folgendem Ziel:
Es sollen alle Datensätze aus Tabelle1 ausgegeben werden und zusätzlich abgefragt werden, ob die Datensätze auch in Tabelle2 enthalten sind.
nur ob?
Oder benötigst Du doch irgendwelche Informationen aus der zweiten Tabelle?
Wie sieht es mit der Beziehung zwischen den beiden Tabellen aus? Können einem Datensatz aus Tabelle1 mehrere Datensätze aus Tabelle2 zugeordnet sein?
$frage_tabelle = "SELECT * FROM (SELECT tabelle1.idnummer, tabelle1.titel FROM tabelle1) AS t1 JOIN (SELECT tabelle2.idnummer as suchnummer FROM tabelle2) AS t2 ON t1.idnummer=t2.suchnummer ORDER BY titel ASC";
Brauche ich den join überhaupt? Ist der Ansatz richtig?
Der Ansatz sieht viel zu kompliziert aus.
Während das query von tabelle1 durchlaufen wird und die Datensätze ausgegeben werden möchte ich abfragen, ob der gerade ausgegebene Datensatz auch in tabelle2 vorhanden ist.
Du kannst das mit einem Join lösen, Du kannst das mit einem Subquery lösen.
Pseudocode:
Gib mir
idnummer,
titel,
sowie die Information, ob es Entsprechungen in tabelle2 gibt
aus
tabelle1
a) Lösung mit einem OUTER JOIN
SELECT DISTINCT -- wir benötigen jeweils nur einen Datensatz
t1.idnummer,
t1.titel,
t2.idnummer AS suchnummer -- falls Entsprechung vorhanden
-- ist das der gleiche Wert wie in t1.idnummer
-- falls nicht, dann der Wert NULL
FROM
tabelle1 t1
LEFT OUTER JOIN
tabelle2 t2
ON
t1.idnummer = t2.idnummer
ORDER BY
t1.titel
eine Lösung mit Subquery:
SELECT
t1.idnummer,
t1.titel,
(SELECT -- gib mir
COUNT(t2.idnummer) -- die Anzahl der Datensätze
FROM -- aus
tabelle2 t2 -- Tabelle2
WHERE t1.idnummer = t2.idnummer -- die die gleiche idnummer haben
) AS anzahl -- und benenne die Spalte mit "anzahl"
FROM
tabelle1 t1
ORDER BY
t1.titel -- aufsteigend ist die Standardsortierung
Es gibt noch weitere Möglichkeiten, das Problem zu lösen. Es hängt auch davon ab, welchen Inhalt Du in der "Prüfspalte" haben willst.
Freundliche Grüße
Vinzenz