AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

self join

Ein Thema von jangbu · begonnen am 2. Jan 2009 · letzter Beitrag vom 2. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#1

self join

  Alt 2. Jan 2009, 12:27
Datenbank: SQL-Server • Version: 2000 • Zugriff über: bde
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
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: self join

  Alt 2. Jan 2009, 12:35
Hi!

Gibt es eine Fehlermeldung o.ä.?


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: self join

  Alt 2. Jan 2009, 12:39
die syntax ist korrekt, jedoch ist das ergebnis unsinn!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: self join

  Alt 2. Jan 2009, 12:40
select * from t where C='G1and 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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: self join

  Alt 2. Jan 2009, 12:43
Oder halt mit OR wenn die Bedingungen unabhängig voneinander erfüllt sein sollen
Markus Kinzler
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: self join

  Alt 2. Jan 2009, 12:52
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: self join

  Alt 2. Jan 2009, 12:54
Und wie ermittelst du die 2. Bedingung?
Markus Kinzler
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: self join

  Alt 2. Jan 2009, 13:05
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
Angehängte Dateien
Dateityp: doc self_join_120.doc (30,5 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#9

Re: self join

  Alt 2. Jan 2009, 13:08
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
Frederic Kerber
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: self join

  Alt 2. Jan 2009, 13:14
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!';
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 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