Entwickler-Ecke

Datenbanken - Alle "NICHT-TREFFER" anzeigen lassen ?!


OliverN_26 - Mo 26.03.12 17:08
Titel: Alle "NICHT-TREFFER" anzeigen lassen ?!
Hey

Wenn ich 2 Tabellen mit INNER JOIN verknüpfe werden mir nur die Daten angezeigt, die auf beiden Seiten zusammen passen .. ok .. kann ich mir aber auch die Daten anzeigen lassen, welche zwar in Tabelle A stehen, in Tabelle B aber keine Übereinstimmung finden?

Danke


bummi - Mo 26.03.12 17:44


Quelltext
1:
2:
3:
Select T1.* from Table1 t1
Left join Table2 t2 on t2.ID=t1.ID
Where T2.ID is null


oder

Quelltext
1:
Select * from table where ID not (Select ID from table2)                    


vagtler - Mo 26.03.12 17:44


SQL-Anweisung
1:
SELECT * FROM T1 LEFT JOIN T2 ON T2.ID = T1.ID WHERE T2 IS NULL                    


//Edit: Zu spät - aber nur gaaanz knapp... :mrgreen:


OliverN_26 - Di 27.03.12 09:37

Hallo

Die Datenmenge ist anscheinend auch hier zu groß, denn ich bekomme einen Fehler 500 angezeigt. Gibt es keine Möglichkeit das ohne einen LEFT JOIN zu machen?

Bei dem SELECT bekomme ich einen Fehler (event_name und wonr_intern sind gleich):

SQL-Anweisung
1:
Select * from sk_auftraege where wonr_intern not (Select event_name from tevents)                    

---->
MySQL meldet:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(Select event_name from tevents) LIMIT 0, 30' at line 1


vagtler - Di 27.03.12 10:07

http://www.teialehrbuch.de/Kostenlose-Kurse/SQL/14762-Verschachtelte-SELECT-Klauseln-in-der-WHERE-Klausel.html


OliverN_26 - Di 27.03.12 10:24

Hmm .. ok .. es muß "NOT IN" heißen .. aber der schmiert immer noch ab. In dem einen Table hab ich 42.000 Einträge und in dem anderen 44.000 .. so komm ich anscheinend nich weiter :-(


Robert.Wachtel - Di 27.03.12 10:30

Was bedeutet denn bei Dir "schmiert immer noch ab"? Ist das eine qualifizierte Fehlerbeschreibung?

Die Anzahl Deiner Tabellenzeilen ist lächerlich - jedes vernünftige RDBMS dürfte selbst mit einem Vielfachen dessen keinerlei Probleme haben.


OliverN_26 - Di 27.03.12 10:32

Ich hatte oben bereits erwähnt das ich einen Fehler 500 bekomme, da die Auswertung zu lange dauert.


Robert.Wachtel - Di 27.03.12 10:40

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Ich hatte oben bereits erwähnt das ich einen Fehler 500 bekomme, da die Auswertung zu lange dauert.

q.e.d.

Ich kenne keinen "Fehler 500" in Verbindung mit MySQL.

Oder redest Du etwas von einem HTTP-Error?

Zu einer *genauen* Fehlerbeschreibung gehört halt ein wenig mehr: wie greifst Du auf die Datenbank zu und von welcher Architektur reden wir hier überhaupt? Welche *exakte* Fehlermeldung kommt genau wo?

Wenn Dein Query ein Timeout produziert, dann solltest Du Dir mal den Plan anschauen - es würde mich nicht wundern, wenn da auf Grund fehlender resp. unpassender Indizierungen das ein oder andere Natural zu tragen kommt.