Problem mit einem SQL Statement
Hallo zusammen,
ich habe folgendes Problem mit einem SQL Select Befehl:
Ergebnis sollen alle Datensätze sein, die
1. In der Tabelle2 auf den Primärschlüssel (tabelle1.nr.1) vorkommen
2. Bei denen tabelle1.nr.7 nicht leer sein darf
3. Bei denne tabelle1.nr.8 leer sein muss
4. Die entweder in der gruppe "XX" mit der fix zugehörigen Branche "XX" und "XX"
sein sollen.
Dies soll nur für folgende Gruppen und deren zugehörige Branche gelten (Die Branchen sind fix den Gruppen zugerordnet und sollten nicht unabhängig voneinander gelten!)
Ich habe Kriterien, welche ich in den Befehl gerne einbauen möchte: Folgende Kriterien sollen im Statement berücksicht werden.
Gruppe 015 mit Branche 000
Gruppe 054 mit Branche 055,000
Gruppe 097 mit Branche 086
usw..
Hierzu habe ich schon folgende 2 Lösungsansätze probiert welche leider nicht das gewünschte Ergebnis lieferten:
Lösungsansatz 1:
select tabelle1.Nr.1,tabelle1.Nr.2,tabelle1.Nr.3, usw. from tabelle1
LEFT JOIN tabelle2 ON tabelle1.Nr.1 = Tabelle2.Nr.5
where Tabelle1.Nr.1 IN (select feld.Nr5 from Tabelle2)
and tabelle1.Nr.7 is not null
and tabelle1.Nr.8 is null
and (gruppe ='015' and branche ='000')
and (gruppe ='025' and branche IN('000','251','250','252','254','253'))
and (gruppe ='027' and branche ='086')
and (gruppe ='034' and branche ='086')
and (gruppe ='097' and branche ='086')
and (gruppe ='037' and branche='000')
and (gruppe ='050' and branche ='054')
and (gruppe ='054' and branche IN('055','000'))
and (gruppe ='062' and branche ='000')
and (gruppe ='074' and branche IN('000','065','067','068','069','070','071','072','073','074','075'))
and (gruppe ='076' and branche IN('000','067','068','069','070','071','072','073','074','075'))
and (gruppe ='075' and branche IN('000','751','752','753','754','755'))
and (gruppe ='080' and branche IN('280','281','081','082','036','000'))
and (gruppe ='088' and branche ='086')
and (gruppe ='091' and branche ='000')
and (gruppe ='281' and branche ='000')
and Tabelle2.Nr.9 ='INVOIC';
Lösungsansatz 2:
select tabelle1.Nr.1,tabelle1.Nr.2,tabelle1.Nr.3, usw. from tabelle1
LEFT JOIN tabelle2 ON tabelle1.Nr.1 = Tabelle2.Nr.5
where Tabelle1.Nr.1 IN (select feld.Nr5 from Tabelle2)
and tabelle1.Nr.7 is not null
and tabelle1.Nr.8 is null
and kunden.kundennr IN (select kundennr from kunden where gruppe ='015' and branche ='000')
and kunden.kundennr IN (select kundennr from kunden where gruppe ='025' and branche ='252')
.
.
.
and Tabelle2.Nr.9 ='INVOIC';
ich habe folgendes Problem mit einem SQL Select Befehl:
Ergebnis sollen alle Datensätze sein, die
1. In der Tabelle2 auf den Primärschlüssel (tabelle1.nr.1) vorkommen
2. Bei denen tabelle1.nr.7 nicht leer sein darf
3. Bei denne tabelle1.nr.8 leer sein muss
4. Die entweder in der gruppe "XX" mit der fix zugehörigen Branche "XX" und "XX"
sein sollen.
Dies soll nur für folgende Gruppen und deren zugehörige Branche gelten (Die Branchen sind fix den Gruppen zugerordnet und sollten nicht unabhängig voneinander gelten!)
Ich habe Kriterien, welche ich in den Befehl gerne einbauen möchte: Folgende Kriterien sollen im Statement berücksicht werden.
Gruppe 015 mit Branche 000
Gruppe 054 mit Branche 055,000
Gruppe 097 mit Branche 086
usw..
Hierzu habe ich schon folgende 2 Lösungsansätze probiert welche leider nicht das gewünschte Ergebnis lieferten:
Lösungsansatz 1:
select tabelle1.Nr.1,tabelle1.Nr.2,tabelle1.Nr.3, usw. from tabelle1
LEFT JOIN tabelle2 ON tabelle1.Nr.1 = Tabelle2.Nr.5
where Tabelle1.Nr.1 IN (select feld.Nr5 from Tabelle2)
and tabelle1.Nr.7 is not null
and tabelle1.Nr.8 is null
and (gruppe ='015' and branche ='000')
and (gruppe ='025' and branche IN('000','251','250','252','254','253'))
and (gruppe ='027' and branche ='086')
and (gruppe ='034' and branche ='086')
and (gruppe ='097' and branche ='086')
and (gruppe ='037' and branche='000')
and (gruppe ='050' and branche ='054')
and (gruppe ='054' and branche IN('055','000'))
and (gruppe ='062' and branche ='000')
and (gruppe ='074' and branche IN('000','065','067','068','069','070','071','072','073','074','075'))
and (gruppe ='076' and branche IN('000','067','068','069','070','071','072','073','074','075'))
and (gruppe ='075' and branche IN('000','751','752','753','754','755'))
and (gruppe ='080' and branche IN('280','281','081','082','036','000'))
and (gruppe ='088' and branche ='086')
and (gruppe ='091' and branche ='000')
and (gruppe ='281' and branche ='000')
and Tabelle2.Nr.9 ='INVOIC';
Lösungsansatz 2:
select tabelle1.Nr.1,tabelle1.Nr.2,tabelle1.Nr.3, usw. from tabelle1
LEFT JOIN tabelle2 ON tabelle1.Nr.1 = Tabelle2.Nr.5
where Tabelle1.Nr.1 IN (select feld.Nr5 from Tabelle2)
and tabelle1.Nr.7 is not null
and tabelle1.Nr.8 is null
and kunden.kundennr IN (select kundennr from kunden where gruppe ='015' and branche ='000')
and kunden.kundennr IN (select kundennr from kunden where gruppe ='025' and branche ='252')
.
.
.
and Tabelle2.Nr.9 ='INVOIC';
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 272664
Url: https://administrator.de/forum/problem-mit-einem-sql-statement-272664.html
Ausgedruckt am: 01.04.2025 um 19:04 Uhr
2 Kommentare
Neuester Kommentar
Wenn du nur Werte aus Tabelle1 auswählst brauchst du nicht zwingend einen Join auf Tabelle2 machen. Du kannst einfach den Subselect nach IN um deine Bedingungen für Tabelle2 ergänzen:
WHERE Tabelle1.Spalte1 IN (SELECT Tabelle2.Spalte5 FROM Tabelle2 WHERE Tabelle2.Spalte9 = 'INVOIC' )
Jetzt weiß ich natürlich nicht wo deine Gruppen und Branchen herkommen da der Tabellenalias fehlt.
In Lösungsansatz 2 steht was von kunden.kundenr IN ( SELECT kundenr FROM kunden... Was in etwa wie prüfen auf 1=1 entspricht. Ich denke mal die Kundennr steht auch noch in einer der anderen Tabellen und die willst du prüfen.
WHERE Tabelle1.Spalte1 IN (SELECT Tabelle2.Spalte5 FROM Tabelle2 WHERE Tabelle2.Spalte9 = 'INVOIC' )
Jetzt weiß ich natürlich nicht wo deine Gruppen und Branchen herkommen da der Tabellenalias fehlt.
In Lösungsansatz 2 steht was von kunden.kundenr IN ( SELECT kundenr FROM kunden... Was in etwa wie prüfen auf 1=1 entspricht. Ich denke mal die Kundennr steht auch noch in einer der anderen Tabellen und die willst du prüfen.