Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jego powiedzenie, że nie mam wybranego wiersza?

Można to zrobić na kilka sposobów:

Możesz użyć zabezpieczenia przed sprzężeniem, takiego jak:

SELECT m.MEMBERID,
       m.LASTNAME,
       m.FIRSTNAME
  FROM MEMBERS m
  WHERE m.MEMBERID NOT IN (SELECT DISTINCT MEMBERID
                             FROM CURRENTLOAN
                           UNION ALL
                           SELECT DISTINCT MEMBERID
                             FROM HISTORY);

Innym sposobem (i moim preferowanym sposobem) na zrobienie tego, co chcesz, jest:

SELECT DISTINCT m.MEMBERID,
                m.LASTNAME,
                m.FIRSTNAME
  FROM MEMBERS m
  LEFT OUTER JOIN (SELECT DISTINCT MEMBERID
                     FROM (SELECT MEMBERID
                             FROM CURRENTLOAN
                           UNION ALL
                           SELECT MEMBERID
                             FROM HISTORY)) u
    ON u.MEMBERID = m.MEMBERID
  WHERE u.MEMBERID IS NULL;

Jednak biorąc pod uwagę dane, które pokazałeś, to zapytanie, a także oryginalne zapytanie, powinno zwrócić zero wierszy. SQLFiddle tutaj

Zwróć uwagę, że jeśli skomentujesz bieżącą pożyczkę członkowi 004, zostanie zwrócony "Joe Brown" SQLFiddle tutaj

Powodzenia.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć operator IN ze stanem LIKE (lub najlepszym sposobem na uzyskanie porównywalnych wyników)

  2. Wypełnianie tabeli PL/SQL z bloku w Oracle D2k Forms

  3. ORA-04084:nie można zmienić NOWYCH wartości dla tego typu wyzwalacza

  4. Jakie są najlepsze praktyki migracji bazy danych Oracle 10g do Microsoft SQL 2008 R2? Aplikacja korzysta z Hibernate

  5. Hibernate @OrderBy z klasą odniesienia