Heim  >  Fragen und Antworten  >  Hauptteil

Wie wähle ich Werte in einer MySQL-Abfrage aus, vergleiche sie mit ihnen und gebe sie zurück?

Ich habe zwei Tische, einen Transfertisch und einen Vereinstisch.

Das ist der Tischtransfer:

id Name Nachname Vom Verein Geh in den Club Preis nach Rückennummer Rücksendenummer
0 Beispiel 1 Beispiel 2 EX3 EX4 Beispiel 5 Beispiel 6 Beispiel 7

Das ist Table Club:

id Abkürzung Vollständiger Name
0 EX3 Beispiel 3
1 EX4 Beispiel 4

Ich möchte eine Zeile aus der Transfertabelle nehmen, den fromclub abrufen, ihn mit der Abkürzung in Clubs abgleichen, den vollständigen Namen aus der Zeile abrufen und ihn der Antwort hinzufügen. Ich möchte dasselbe mit der Toclub-Kolumne machen. Dann möchte ich es für jede zweite Zeile in der Tabellenübertragung wiederholen.

Der Einfachheit halber ist hier mein erwartetes Ergebnis:

id Name Nachname Vom Verein Geh in den Club Preis nach Rückennummer Rücksendenummer Aus dem vollständigen Namen des Vereins vollständiger Name des Clubs
0 Beispiel 1 Beispiel 2 EX3 EX4 Beispiel 5 Beispiel 6 Beispiel 7 Beispiel 3 Beispiel 4

Ich kann anscheinend keine Möglichkeit finden, eine Abfrage zu erstellen, die dies tut, ohne etwa 512 Ergebniszeilen zu erhalten, obwohl ich derzeit nur 8 Ergebniszeilen habe.

SELECT *
FROM transfers,
(SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.fromclub) AS fromclubfullname,
(SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.toclub) AS toclubfullname

Es werden 512 Zeilen und zwei Spalten (vollständiger Name genannt) anstelle einer Spalte fromclubfullname und toclubfullname zurückgegeben.

P粉986028039P粉986028039183 Tage vor410

Antworte allen(1)Ich werde antworten

  • P粉827121558

    P粉8271215582024-04-03 15:15:27

    您可以通过左连接来做到这一点 -

    SELECT 
         transfers.*,
         c1.fullname as fromclubfullname,
         c2.fullname as toclubfullname FROM `transfers`
    LEFT JOIN clubs c1 ON (c1.abbr = transfers.fromclub)
    LEFT JOIN clubs c2 ON (c2.abbr = transfers.toclub)

    Antwort
    0
  • StornierenAntwort