2017-08-04 2 views
-1

Ich möchte den Wert in EXTRA_CALL anzeigen, der nicht in TBL_CALLPLAN vorhanden ist. Ich habe die Anfrage:Wert nicht in einer anderen Tabelle vorhanden SQLite

Cursor c = db.rawQuery("select a.CODE, a.NAME from EXTRA_CALL a LEFT JOIN TBL_CALLPLAN b ON b.CCODE=a.CODE " + 
       "WHERE b.CCODE IS NULL", null); 

wenn ich diese Abfrage ausführen, immer der Wert aller in EXTRA_CALL Tabelle zeigen. Wo ist meine Schuld?

+0

Es haupt nichts falsch mit dieser Abfrage ist, vorausgesetzt, es ist das, was Sie tun mögen. Ihre Abfrage würde Datensätze in 'EXTRA_CALL' zurückgeben, die _nicht_ zu irgendetwas in' TBL_CALLPLAN' passen. Wollen Sie das tun? –

+0

Ich möchte den Wert in EXTRA_CALL anzeigen, der in TBL_CALLPLAN nicht existiert. – user2901572

+1

Das bedeutet, dass alle zusätzlichen Anrufe, die Sie sehen können, nicht im Anrufplan vorhanden sind. Sind Sie sicher, dass Sie den Tabellen mit der richtigen Spalte beigetreten sind? –

Antwort

0

diese Abfrage mein Problem lösen machen:

Cursor c = db.rawQuery("select a.CODE, a.NAME from EXTRA_CALL a where " + 
      "not a.code in (select ccode from tbl_callplan) order by a.custname asc", null); 
-1

Entweder gibt es wirklich keine übereinstimmende EXTRACALL-Zeile für jede CALLPLAN-Zeile oder Ihr SQLite leidet unter dem gleichen Fehler, den einige Versionen von Oracle 9i hatten, wo die Reihenfolge der Tabellen in der ON-Bedingung von Bedeutung war. Tauschen Sie es um, so sagt die Abfrage on a.code=b.ccode und sehen Sie, ob das Ergebnis anders ist. Es sollte nicht sein, aber wenn man mit dieser uralten Version von Orakel arbeitet, erwartet man sicherlich, dass die Tabelle auf der linken Seite des JOIN-Schlüsselwortes auch diejenige ist, die auf der linken Seite des = angegeben wird, wenn eine Linksbindung gemacht wird. Vielleicht zu SQLite hat diese schlechte Gewohnheit

Verwandte Themen