Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Abfrage (https://www.delphipraxis.net/80050-sql-abfrage.html)

cu mic 2. Nov 2006 08:50

Datenbank: ms sql • Version: 2000 • Zugriff über: ADO

SQL Abfrage
 
Ich steh grad auf dem Schlauch :gruebel:

Ich habe zwei Tabellen

tbl_Mitarbeiter
---------------
Mitarbeiternr
Name

und

tbl_Ausgabe
-----------
Ausgabenr
Ausgeber -> tbl_Mitarbeiter.Mitarbeiternr
STPAusgabe -> tbl_Mitarbeiter.Mitarbeiternr

Ich wollte nun alle Ausgabenr(n) inkl. den Name(n) der Ausgeber und STPAusgabe selektieren.

Gibt es da nicht eine einfache Abfrage?

bttb930 2. Nov 2006 09:01

Re: SQL Abfrage
 
select * from tbl_Ausgabe A
left join tbl_Mitarbeiter MAusgabe ON A.Ausgeber = MAusgabe.MitarbeiterNr
left join tbl_Mitarbeiter MSTPAusgabe ON A.STPAusgabe = MSTPAusgabe.MitarbeiterNr

cu mic 2. Nov 2006 09:08

Re: SQL Abfrage
 
:spin2:

Ich frage mich, warum man zig jahre Informatik studiert :wall:

Ich danke Dir!

mkinzler 2. Nov 2006 09:18

Re: SQL Abfrage
 
Zitat:

Ich frage mich, warum man zig jahre Informatik studiert ouch!
Um die Probleme theroetisch zu verstehen :mrgreen:

Jelly 2. Nov 2006 11:18

Re: SQL Abfrage
 
Zitat:

Zitat von bttb930
select * from tbl_Ausgabe A
left join tbl_Mitarbeiter MAusgabe ON A.Ausgeber = MAusgabe.MitarbeiterNr
left join tbl_Mitarbeiter MSTPAusgabe ON A.STPAusgabe = MSTPAusgabe.MitarbeiterNr

Warum nicht ein join sparen:
SQL-Code:
select * from tbl_Ausgabe A
left join tbl_Mitarbeiter m ON A.Ausgeber = m.MitarbeiterNr and A.STPAusgabe = m.MitarbeiterNr
Das sollte schneller sein.

NormanNG 2. Nov 2006 12:24

Re: SQL Abfrage
 
Hi,

@Jelly
Das ist aber nicht das Gleiche. Deine Abfrage liefert nur die Zeilen, bei denen beide Felder auf den selben Mitarbeiter zeigen. Die andere Abfrage hingegen bringt alletbl_Ausgabe-Zeilen mit den jeweiligen Mitarbeitern.

Jelly 2. Nov 2006 12:34

Re: SQL Abfrage
 
Stimmt, ich hatte die Frage nur halbherzig gelesen.

raiguen 2. Nov 2006 13:50

Re: SQL Abfrage
 
So müsste es auch mit einem JOIN gehen:
SQL-Code:
SELECT * FROM tbl_Ausgabe A
JOIN tbl_Mitarbeiter m ON (A.Ausgeber = m.MitarbeiterNr OR A.STPAusgabe = m.MitarbeiterNr)
Es werden also alle Mitarbeiter berücksichtigt, die sowohl in A.Ausgeber als auch in A.STPAusgabe vorhanden sind...

Jelly 2. Nov 2006 13:53

Re: SQL Abfrage
 
Zitat:

Zitat von raiguen
Es werden also alle Mitarbeiter berücksichtigt, die sowohl in A.Ausgeber als auch in A.STPAusgabe vorhanden sind...

Du meinst wohl oder, sonst sind wir ja wieder bei meinem Join gelandet :mrgreen:

raiguen 2. Nov 2006 14:15

Re: SQL Abfrage
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von raiguen
Es werden also alle Mitarbeiter berücksichtigt, die sowohl in A.Ausgeber als auch in A.STPAusgabe vorhanden sind...

Du meinst wohl oder, sonst sind wir ja wieder bei meinem Join gelandet :mrgreen:

Für mich ist sowohl...als auch gleichzusetzen mit oder...
oder geh ich da irrig in der Annahme (immer diese sprachlischen Feinheiten...):gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 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