2016-10-01 2 views
-1

Ich habe zwei Tabellen Table1 und Tabelle 2 mit 3 Spalten ID, Name und MAC-Adresse und in der zweiten Tabelle habe ich auch Spalte mit dem Namen mac.Wie kann ich zwei Tabellen verbinden und Zeilen zurückgeben, die nicht übereinstimmen. In sqlite

Die Dinge, die ich brauche, dass in Tabelle 1 Ich habe 10 Datensätze und in Tabelle 2 habe ich nur 5 Datensätze und ich möchte die Datensätze, die nicht in Tabelle2 vorhanden sind.

Wie kann ich dies in SQLite Android tun? Jede Hilfe wäre willkommen. Vielen Dank im Voraus ...

Vielen Dank für eine Zeit, diesen

In Tabellennamen aus dem zweiten Klasse einen Namen zu lesen

diese Abfrage für SQL ist und ich brauche Ich füge für SQLite

SELECT T1.* 
FROM T1 
WHERE NOT EXISTS(SELECT NULL 
        FROM T2 
        WHERE T1.ID = T2.ID 
         AND T1.Date = T2.Date 
         AND T1.Hour = T2.Hour) 
+0

ich es nicht selbst ausprobiert, so könnten Sie versuchen:. 'T1 SELECT * FROM T1 LINKS VERBINDEN SIE T2 an T1.ID = T2.ID UND T1.Datum = T2.Datum UND T1.Hour = T2.Hour WHERE T2.ID ist null' – yvs

+0

Ich füge a hinzu Tabellenname aus zweiter Klasse? – Badprince

+0

Ich habe keine Ahnung, was ist die zweite Klasse, hier ist die Frage, wie sql umschreiben, nehme ich an – yvs

Antwort

1

Dies sollte mit SQLite funktionieren, wenn auch nicht effizient.

Wenn ID tut, was es tun soll, dann Prüfung für T1.Date = T2.Date und T1.Hour = T2.Hour könnte weggelassen werden.

bessere Art und Weise mit JOIN:

SELECT T1.* 
FROM T1 
LEFT JOIN T2 ON T1.ID = T2.ID 
WHERE T2.ID IS NULL; 
+0

in dieser Abfrage kann ich den Tabellennamen aus einer anderen Klasse na wie Select ID, Name von mainactivity.collect, wo Hauptaktivität ist mein Klassenname und sammeln ist eine Zeichenfolge Variable kann ich das tun? – Badprince

+0

@Badprince Sie scheinen Ihre Java und SQL zu verwechseln. Ich bin mir nicht sicher, was Sie sagen wollen: Wenn Sie meinen, dass Sie Tabellen, Spalten oder Werte oder etwas anderes in Ihrer Datenbank den gleichen Namen wie den Namen geben möchten, den Sie Ihrer Android-Aktivität gegeben haben, ist das eindeutig möglich. Warum nicht? –

+0

die qures werden wie diese sqlite.rawquery (SELECT T1. * VON T1 LINKE JOIN T2 ON T1.ID = T2.ID WHERE T2.ID ist NULL); ??? – Badprince

0

Sie die Bedingung angeben, basierend auf Referenzschlüssel (I angenommen MAC)

Select T1.ID, T1.Name From Table1 T1 LEFT JOIN From Table2 T2 on T1.Mac=T2.Mac where T2.Mac is NULL. 

oder

+0

in dieser Abfrage kann ich den Tabellennamen aus einer anderen Klasse na wie Wählen Sie ID, Name von mainactivity.collect wo Hauptaktivität ist meine Klassenname und Collect ist eine String-Variable kann ich das tun? – Badprince

0
SELECT * 
    FROM T1 
    WHERE T1.name NOT IN (SELECT name FROM T2) 

------------------- Oder diese für mehr Einschränkung tun ------ --------------------

SELECT * 
    FROM T1 
    WHERE T1.name NOT IN (SELECT name FROM T2) and 
     T1.mac NOT IN (SELECT mac FROM T2) 
Verwandte Themen