Ich habe zwei Tabellen A & B.
id | name | num
id | date | roll
id in Tabelle B ist ein Fremdschlüssel, der sich auf die id in Tabelle A bezieht.
Ich möchte den Inhalt der Tabelle B abrufen, in der id angegeben ist, und benötige zusammen mit diesen Daten auch den Namen, dessen id in Tabelle A angegeben ist.
Ich habe gegoogelt und einige seltsame Schlüsselwörter herausgefunden: LEFT, JOIN, aber ich konnte sie nicht verstehen.
Ich muss Datum und Rolle aus Tabelle B und Name aus Tabelle A in einer einzigen Abfrage erhalten. (id ist ein Fremdschlüssel)
Das Plugin, das ich verwende, erlaubt leider keine durch Kommas getrennten Abfragen, so dass ich beide SELECT
s in einer Abfrage machen muss.
Die Verknüpfung von Tabellen ist ein grundlegendes Prinzip relationaler Datenbanken. In Ihrem Fall sind A und B über die Spalte "id" miteinander verbunden, was bedeutet, dass Sie eine ähnliche Syntax wie die folgende verwenden können:
SELECT a.id, a.name, a.num, b.date, b.roll
FROM a
INNER JOIN b ON a.id=b.id;
INNER JOIN" bedeutet, dass Sie nur Zeilen sehen, in denen es übereinstimmende Datensätze in A und B gibt. Wenn Sie alle Zeilen in A und übereinstimmende Datensätze in B haben wollen, können Sie INNER JOIN
in LEFT JOIN
ändern. Wenn Sie dagegen alle Datensätze aus B und nur die übereinstimmenden aus A benötigen, verwenden Sie RIGHT JOIN
. Wenn Sie schließlich alle Datensätze aus beiden Tabellen benötigen, ob sie übereinstimmen oder nicht, können Sie FULL JOIN
verwenden.
Sie müssen diese Tabellen verbinden, um das gewünschte Ergebnis zu erhalten.
SELECT b.*, a.name FROM tableB AS b INNER JOIN tableA as A ON (b.id=a.id);
Diese Abfrage gibt alles aus Tabelle B und Name
aus Tabelle A zurück, wobei die ID aus Tabelle B mit der ID aus Tabelle A übereinstimmt.
Um das Ergebnis aus den beiden mit dem Fremdschlüssel verbundenen Tabellen zu erhalten, müssen Sie die Tabellen verbinden.
Finden Sie unten Abfrage als wie Sie das Ergebnis wollen:
SELECT name, date, roll
FROM A
INNER JOIN B
ON A.id = B.id;