Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Where-Bedingung über einen Status (https://www.delphipraxis.net/57236-where-bedingung-ueber-einen-status.html)

smudo 17. Nov 2005 15:40

Datenbank: Interbase • Version: 6.1 • Zugriff über: egal

Where-Bedingung über einen Status
 
Hallo,

der Titel ist wirklich dumm formuliert, vielleicht ist meine Frage auch nicht grad schlau, ich hoffe, ihr seht mir das nach einem äußerst anstrengenden Tag nach...

Ich habe eine Detailtabelle in welcher zu einer Person verschiedene Stati gespeichert sind:
Person1 S1
Person1 S2
Person1 S3
Person2 S1
Person2 S3
Person3 S1
Person3 S2

Ich möchte jetzt in einer Abfrage beispielsweise die Person ermitteln, welche den Status S1 und S3, aber nicht S2 hat, also im Beispiel Person2

Blackout :freak:

Danke

René

marabu 17. Nov 2005 15:48

Re: Where-Bedingung über einen Status
 
Hallo René,

mein Ansatz wäre das:

SQL-Code:
SELECT DISTINCT person FROM details WHERE status in ('S1', 'S3') AND NOT status = 'S2'
Grüße vom marabu

distinct missing

BeerBear 17. Nov 2005 15:52

Re: Where-Bedingung über einen Status
 
Ich würde vorschlagen:

Delphi-Quellcode:
select bla from bla where Status = 'S1' or Status = 'S3'

smudo 17. Nov 2005 15:59

Re: Where-Bedingung über einen Status
 
@marabu: Ich glaub nicht, dass es das ist.
Als Resultat bekomme ich dann DS, welche den Status S1 oder S3 haben. Ich möchte aber nur welche mit S1 und! S3, aber auf keinen Fall S3.
Das Problem ist, das bei solch einer einfachen Abfrage mir jede Zeile geliefert wird, in welcher die Bedingung stimmt. Im Ganzen verfälscht es aber mein Resultat.

Zeile 1 S1 ist in S1, S3 --> wird ausgegeben
Zeile 2 S2 --> wird nicht ausgegeben
Zeile 3 S3 ist in S1, S3 --> wird ausgegeben

Es wird mir also diese Person zurückgegeben (mit 2 Zeilen), obwohl sie den Status S2 hat!

smudo 17. Nov 2005 16:00

Re: Where-Bedingung über einen Status
 
@BeerBear

toller Name :zwinker: aber der Code funktioniert so trotzdem nicht

dataspider 17. Nov 2005 16:17

Re: Where-Bedingung über einen Status
 
das sollte mit exists gehen:
select distinct(d.person) from details d where
exists (select * from details where person=d.person and status = 'S1') and
exists (select * from details where person=d.person and status = 'S3') and
not exists (select * from details where person=d.person and status = 'S2')
Cu, Frank

marabu 17. Nov 2005 16:19

Re: Where-Bedingung über einen Status
 
SQL-Code:
select distinct person from details
where person in (select person from details where status = 1)
and person in (select person from details where status = 3)
and not person in (select person from details where status = 2)
Kommt davon, wenn man zwischen Tür und Angel...

BeerBear 17. Nov 2005 16:40

Re: Where-Bedingung über einen Status
 
Ich glaub, ich blicke nicht ganz durch.
Kann denn eine Person mehrere Stati haben?

EDIT: O.K. schon verstanden. hätte mir deine Datensätze mal genauer anschauen sollen. Sorry. :oops:

smudo 18. Nov 2005 07:23

Re: Where-Bedingung über einen Status
 
Was sind das für Leute, die erst ne Frage stellen und dann einfach Feierabend machen :evil: :zwinker:

Sorry, war echt fertig gestern. Jetzt wo ich die Lösung von marabu und dataspider lese, ist mir natürlich auch alles wieder klar. Ich persönlich bevorzuge die exists-Methode.

Manchmal steht man absolut auf der Leitung :oops:

Danke

René


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz