Ich bin ziemlich neu in SQL und habe das folgende Problem mit einer einfachen Abfrage.
Ich muss eine Abfrage durchführen, dass BEITRETEN 2 Tische. Die Join-Operation befindet sich nicht in einem einzelnen Feld, sondern muss in zwei verschiedenen Feldern mit demselben Namen für diese Tabellen ausgeführt werden.
Also habe ich so etwas gemacht:
SELECT count(*)
FROM TID003_ANAGEDIFICIO anagraficaEdificio
INNER JOIN TID002_CANDIDATURA candidatura ON(candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR, candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN)
WHERE anagraficaEdificio.FLG_GRA=1;
Aber bei der Durchführung dieser Abfrage habe ich die folgende Fehlermeldung angezeigt:
Operand sollte 1 Spalte (n) enthalten
Wie Sie sehen können, versuche ich, diesen beiden Tabellen beizutreten, und der Join basiert auf 2 Feldern:
ON(candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR, candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN)
Was ist falsch? Was vermisse ich? Wie kann ich dieses Problem beheben?
Antworten:
1 für die Antwort № 1Benutzen AND
um die zusätzlichen Join-Bedingungen anzugeben, wenn Sie mehrere Bedingungen gleichzeitig verwenden möchten:
SELECT count(*)
FROM TID003_ANAGEDIFICIO anagraficaEdificio
JOIN TID002_CANDIDATURA candidatura
ON candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR
AND candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN
WHERE anagraficaEdificio.FLG_GRA = 1;
Wenn die Spaltennamen der verknüpften Spalten in beiden Tabellen identisch sind, können Sie eine Verknüpfung mit der Tabelle verwenden USING
Prädikat stattdessen:
JOIN TID002_CANDIDATURA candidatura USING (PRG_PAR, PRG_CAN)
Dies wird nicht in allen Datenbanken unterstützt, sondern in MySQL (siehe Dokumentation für mehr Informationen).