SQL auf, wie Sie gleichzeitig vergleichen zwei Werte in der Spalte in einer Abfrage
Brauche ich eine Abfrage erstellen, die zu finden, die Namen der Fahrer, deren Prüfungsergebnisse bekommen geringer, wenn Sie mehr Prüfungen. Also ich habe folgende Tabellen:
branch(branch_id, branch_name, branch_addr, branch_city, branch_phone);
driver(driver_ssn, driver_name, driver_addr, driver_city, driver_birthdate, driver_phone);
license(license_no, driver_ssn, license_type, license_class, license_expiry, issue_date, branch_id);
exam(driver_ssn, branch_id, exam_date, exam_type, exam_score);
**die exam_date ist ein Datum
So, ich bin mit dem Tabellen-Treiber und-Prüfung. Ich würde gerne irgendwie überprüfen, dass die exam_date>anotherDate, während zur gleichen Zeit die überprüfung, dass exam_score
*EDIT
Dies ist, was ich kam mit, aber ich fühle mich wie einige der syntax ist illegal. Ich bekomme immer einen syntax-Fehler.
s.executeQuery("SELECT driver_name " +
"FROM driver " +
"WHERE driver.driver_ssn IN " +
"(SELECT e1.driver_ssn" +
"FROM exam e1" +
"WHERE e1.exam_score < " +
"(SELECT e2.exam_score FROM exam e2)" +
"AND e1.exam_date > " +
"(SELECT e2.exam_date FROM exam e2)");
BEARBEITEN! Ich habe es funktioniert! Vielen Dank für Ihre Eingabe jeder!
SELECT driver.driver_name
FROM driver
WHERE driver.driver_ssn IN
(SELECT e1.driver_ssn
FROM exam e1, exam e2, driver d
WHERE e1.exam_score < e2.exam_score
AND e1.exam_date > e2.exam_date
AND e1.driver_ssn=e2.driver_ssn)
Du musst angemeldet sein, um einen Kommentar abzugeben.
WÄHLEN gibt eine Menge zurück, und Sie ist nicht zu vergleichen einem einzigen Wert für einen Satz. Sie können versuchen, etwas entlang diesen Linien. Dies ist ähnlich zu verkaufen und nicht verarbeiten drei exam Fall :-
Die Abfrage selektiert alle Paare von Prüfungen getroffen von einem Fahrer, in dem der score ist weniger und das Datum groß
Müssen Sie einen self-join. Siehe dieses Beispiel und arbeiten Sie zu Ihrem schema.
Hier ist ein SQL Fiddle, dass ich unter Beweis stellen.
Einfach nehmen, auf dieses problem bekommen würde-Fahrer, die ein paar der Prüfungen und Ihre zweite Punktzahl geringer ist.
Vergleichen von Spalten aus der gleichen Tabelle, SQL verwendet self-join. Die join-Bedingung enthalten sollte: