Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi self join (https://www.delphipraxis.net/126777-self-join.html)

jangbu 2. Jan 2009 11:27

Datenbank: SQL-Server • Version: 2000 • Zugriff über: bde

self join
 
Hallo,

bekomme einen self join nicht hin:

Momentan suche ich 2 stufig:
1. suche alle datensätze die C='G1' (primäres Suchkriterium)
2. suche alle datensätze die A=100 (aus 1 resultierendes Suchkriterium)

Tabelle T

A B C
100 SM G1
100 x
100 y
200 SM G2
200 x
200 y

Mit einem self join sollte das auch klappen, bekomme es aber nicht hin

select B.y
from y.tabelle,x.tabelle
where x.C='G1' and y.A=x.A

Danke

fkerber 2. Jan 2009 11:35

Re: self join
 
Hi!

Gibt es eine Fehlermeldung o.ä.?


Ciao, Frederic

jangbu 2. Jan 2009 11:39

Re: self join
 
die syntax ist korrekt, jedoch ist das ergebnis unsinn!

Bernhard Geyer 2. Jan 2009 11:40

Re: self join
 
SQL-Code:
select * from t where C='G1' and A='100'
Und dann noch schön prepared Statements verwenden. Von der BDE will ich jetzt mal nichts reden. Die wird dir noch an genügend Stellen Probleme bereiten. Nimm für den MS SQL Server ADOExpress/dbGO.

mkinzler 2. Jan 2009 11:43

Re: self join
 
Oder halt mit OR wenn die Bedingungen unabhängig voneinander erfüllt sein sollen

jangbu 2. Jan 2009 11:52

Re: self join
 
select * from t where C='G1' and A='100'

kann ich nicht verwenden, da ich ja erst durch das Ergebnis der ersten Abfrage (C='G1') weiß, wonach ich als nächstes suchen muss (A='100'), ich weiß also erst nach der 1. Abfrage wonach ich eigentlich suchen muss!

mkinzler 2. Jan 2009 11:54

Re: self join
 
Und wie ermittelst du die 2. Bedingung?

jangbu 2. Jan 2009 12:05

Re: self join
 
Liste der Anhänge anzeigen (Anzahl: 1)
probiere die abfrage momentan noch direkt über den enterprise manager (s.A.)
hoffe eigentlich, die records mit B=x und B=y zu finden die ja der 2. Abfrage A=100 (also y.A=x.A) ensprechen

select y.b
from y.tabelle,x.tabelle
where x.C='G1' and y.A=x.A

fkerber 2. Jan 2009 12:08

Re: self join
 
Hi!

Also die erste Suchabfrage sucht quasi nur die Bedingung für die 2. raus und wird für die eigentliche Suche dann ignoriert und es wird nur noch nach diesem gefundenem Kriterium gesucht?

Ciao, Frederic

mkinzler 2. Jan 2009 12:14

Re: self join
 
Die 2. Tabelle y wird ja nicht eingeschränkt, er nimmt also deren ersten Wert für die Abfrage der 2. Tabelle x.

SQL-Code:
select
    x.*
from
    Table1 x
where
    x.a = (select top 1 y.a from table1 y) and    
    x.c = 'G!';


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.
Seite 1 von 2  1 2      

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