![]() |
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 |
Re: self join
Hi!
Gibt es eine Fehlermeldung o.ä.? Ciao, Frederic |
Re: self join
die syntax ist korrekt, jedoch ist das ergebnis unsinn!
|
Re: self join
SQL-Code:
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.
select * from t where C='G1' and A='100'
|
Re: self join
Oder halt mit OR wenn die Bedingungen unabhängig voneinander erfüllt sein sollen
|
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! |
Re: self join
Und wie ermittelst du die 2. Bedingung?
|
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 |
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 |
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 04:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz