Thema: Delphi SQL "umbauen"

Einzelnen Beitrag anzeigen

Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#23

Re: SQL "umbauen"

  Alt 30. Apr 2008, 19:19
Zitat:
du schummelst
im Original stand ein full-join, und darauf bezog sich meine Anmerkung.
@NormanNG:

Im Beispiel habe ich zwar left join verwendet, weil full join m.E. u.U. auch unerwünschte Daten bringt, aber es ging ja darum, dass nicht alle Teams aufgelistet wurden; bei meiner Abfrage aber kommen alle Teams vor:

SQL-Code:
create table TEST1 (TEAM varchar(10));
create table TEST2 (TEAM varchar(10), DATUM datetime);

insert into TEST1 values ('TeamA');
insert into TEST1 values ('TeamB');
insert into TEST1 values ('TeamC');

insert into TEST2 values ('TeamA', '29.04.2008');
insert into TEST2 values ('TeamB', '30.04.2008');
insert into TEST2 values (null, '29.04.2008');
insert into TEST2 values (null, '30.04.2008');


mit "where" fehlt TeamA komplett:

select a.TEAM, b.DATUM from TEST1 a full join TEST2 b on b.team = a.team
where (b.DATUM = '30.04.2008or b.DATUM is null) order by 1, 2

<NULL> 30.04.2008
TeamB 30.04.2008
TeamC <NULL>

bei der Bedingung im Join erscheinen alle Teams und ggf. noch ein paar
unnötige Datumswerte mit Team "NULL" (welche bei left join fehlen würden):

select a.TEAM, b.DATUM from TEST1 a full join TEST2 b on b.team = a.team
and (b.DATUM = '30.04.2008') order by 1, 2

<NULL> 29.04.2008
<NULL> 29.04.2008
<NULL> 30.04.2008
TeamA <NULL>
TeamB 30.04.2008
TeamC <NULL>

Aber auf jeden Fall fehlt kein Team - im Gegensatz zu "where ..."!
Daher ist zumindest die Aussage

Zitat:
es macht keinen Unterschied, ob die Bedingungen direkt im Join oder im Where gesetzt sind
widerlegt.

Gruß
Olli
  Mit Zitat antworten Zitat