casi4711
Benutzer
- Beiträge
- 12
Hallo allerseits, ich breche mir irgendwie gerade die Ohren an einer SQL Abfrage. Ich habe 2 in Beziehung stehenden Tabellen. Primärschlüssel jeweils unterstrichen.
1. Tabelle Bestaende:
B_ID,BIntAbk,Datum
2. Tabelle Objekte:
O_ID, B_id,Ob_F2,Ob_F20...
Innerhalb der Bestände gibt es mehrere Objekte. Aus der Objekt Tabelle sollen die Zeilen ausgesucht werden die 2 Bedingungen erfüllen.
Einmal soll Feld Ob_F2 einen String wie "xxx" enthalten, zum anderen soll Ob_F2 NULL sein. Die einfache Abfrage spuckt ca 600000 Ergebnisse aus. Insgesamt sind in der Objekttabelle rund 2mio Datensätze enthalten.
Nun will ich aber auch das jeweils nicht nur die B_ID angezeigt wird, sondern auch das Feld B_intAbk aus der Objekte Tabelle, hier werden mir aber einige Millionen Datensätze ausgespuckt, die O_Ids kommen nun mehrfach vor. Meine Abfrage sieht wie folgt aus:
Was mache ich falsch?
Danke für Hilfe i.V.
Gruss
Chris
1. Tabelle Bestaende:
B_ID,BIntAbk,Datum
2. Tabelle Objekte:
O_ID, B_id,Ob_F2,Ob_F20...
Innerhalb der Bestände gibt es mehrere Objekte. Aus der Objekt Tabelle sollen die Zeilen ausgesucht werden die 2 Bedingungen erfüllen.
Einmal soll Feld Ob_F2 einen String wie "xxx" enthalten, zum anderen soll Ob_F2 NULL sein. Die einfache Abfrage spuckt ca 600000 Ergebnisse aus. Insgesamt sind in der Objekttabelle rund 2mio Datensätze enthalten.
Code:
USE test;
GO
SELECT Ob_id,Ob_F2,Ob_F3,ob_f20
FROM M_Objekte1
WHERE
(Ob_f2 LIKE '%xxx%')
OR
(Ob_f2 IS NULL)
ORDER BY M_Objekte1.B_ID ASC,Ob_F2 ASC,OB_ID ASC
Nun will ich aber auch das jeweils nicht nur die B_ID angezeigt wird, sondern auch das Feld B_intAbk aus der Objekte Tabelle, hier werden mir aber einige Millionen Datensätze ausgespuckt, die O_Ids kommen nun mehrfach vor. Meine Abfrage sieht wie folgt aus:
Code:
USE test;
GO
SELECT Ob_id,Ob_F2,Ob_F3,ob_f20,B_intAbk
FROM M_Objekte1 INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID
AND
(Ob_f2 LIKE '%xxx%')
OR
(Ob_f2 IS NULL)
ORDER BY M_Objekte1.B_Id ASC,Ob_F2 ASC,OB_ID ASC
Was mache ich falsch?
Danke für Hilfe i.V.
Gruss
Chris