Autor Beitrag
OliverN_26
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Di 02.10.12 10:16 
Hallo

Ich habe ein Problem mit einem SELECT.
Ausgangssituation:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  id   artikel   status    tk   serial
-----------------------------------------------
  1    10001     Eingang   1    1_dsjghsdjghrtb
  2    10002     Eingang   1    2_sajjwerqewvjg
  3    10003     Eingang   1    3_dsksatwetvwh5
  4    10002     Ausgang   1    2_sajjwerqewvjg
  5    10002     Eingang   1    2_fqwkrrvrtiweh
  6    10001     Ausgang   1    1_dsjghsdjghrtb
  7    10003     Eingang   1    3_farjqwhrjqweh
  8    10001     Eingang   1    1_dsakfjthwevuu
  9    10001     Eingang   1    1_salaskfrejewt


In der Test-Tabelle möchte ich für jeden Artikel die Seriennummern haben, welche den status = 'Eingang' und nicht 'Ausgang' haben. Sobald also eine Seriennummer (je Artikel) den status = 'Ausgang' hat, soll sie in der Ergebnismenge nicht auftauchen.

Ergebnis sollte dann so aussehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
  id   artikel   status    tk   serial
-----------------------------------------------
  3    10003     Eingang   1    3_dsksatwetvwh5
  5    10002     Eingang   1    2_fqwkrrvrtiweh
  7    10003     Eingang   1    3_farjqwhrjqweh
  8    10001     Eingang   1    1_dsakfjthwevuu
  9    10001     Eingang   1    1_salaskfrejewt


Ich tu mich etwas schwer mit dem rausfiltern. WENN ich schreibe:
ausblenden Quelltext
1:
SELECT * FROM test WHERE status = 'Eingang' AND NOT status = 'Ausgang'					

lässt er ja nur den status 'Ausgang' weg. Da die Seriennummer aber durch diesen status nicht mehr gültig ist, muß die id mit dem 'Eingang' auch raus.
Ich hoffe ihr könnt mir helfen und ich hab mich nicht zu undeutlich ausgesprochen.

Vielen Dank im voraus.

Oliver
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 02.10.12 10:39 
aus dem Kopf, ohne es mit einer DB zu testen
ausblenden Quelltext
1:
SELECT * FROM test WHERE not Exists(Select * from test t2 where t2.status='Ausgang' and t2.artikel=test.artikel)					

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 432
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Di 02.10.12 10:39 
ausblenden Quelltext
1:
select * from test where serial not in (select serial from test where status='Ausgang')					

(Zeigt alle Sätze, bei denen zur Serial kein "Ausgang" vorliegt)
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Di 02.10.12 10:58 
Perfect. Ich danke euch. Genau was ich gesucht habe :-)