Alles in Erster Abfrage ohne Zweite Abfrage

gberisha

Neuer Benutzer
Beiträge
2
Hallo, Ich möchte gerade eine gesamt abfrage schreiben in der ich folgendes tu.

select TeilnehmerID
from
(
Abfrage ergebnisse (121 in meinem fall)
) AS A1
Join
(
Abfrage 2 ergebnisse (7)
) AS A2

ich will in diesem fall Alles aus A1 ohne die ergebnisse aus A2
und komme aber nicht auf die idee wie ich A2 aus A1 Rausfilter

Vielen dank im voraus
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.423
Hallo, Ich möchte gerade eine gesamt abfrage schreiben in der ich folgendes tu.

select TeilnehmerID
from
(
Abfrage ergebnisse (121 in meinem fall)
) AS A1
Join
(
Abfrage 2 ergebnisse (7)
) AS A2

ich will in diesem fall Alles aus A1 ohne die ergebnisse aus A2
und komme aber nicht auf die idee wie ich A2 aus A1 Rausfilter

Vielen dank im voraus


Deine Abfrage ist so ja erst mal wohl syntaktisch falsch. Ich bin mir daher auch nicht sicher, Dich wirklich verstanden zu haben.

Du hast derzeit etwas wie:

Code:
test=*# select * from (select 'a' c1, * from generate_series(1,12) s) foo join (select 'b' c2, * from generate_series(1,5) s) bar using (s);
 s | c1 | c2
---+----+----
 1 | a  | b
 2 | a  | b
 3 | a  | b
 4 | a  | b
 5 | a  | b
(5 rows)

Was *genau* willst Du nun sehen? Nur die Spalte c1?

Code:
test=*# select c1 from (select 'a' c1, * from generate_series(1,12) s) foo join (select 'b' c2, * from generate_series(1,5) s) bar using (s);
 c1
----
 a
 a
 a
 a
 a
(5 rows)


Oder ist Dein Problem, daß Du jetzt hast:

Code:
test=*# select * from (select 'a' c1, * from generate_series(1,12) s) foo left join (select 'b' c2, * from generate_series(1,5) s) bar using (s);
 s  | c1 | c2
----+----+----
  1 | a  | b
  2 | a  | b
  3 | a  | b
  4 | a  | b
  5 | a  | b
  6 | a  |
  7 | a  |
  8 | a  |
  9 | a  |
 10 | a  |
 11 | a  |
 12 | a  |
(12 rows)

und willst:

Code:
test=*# select * from (select 'a' c1, * from generate_series(1,12) s) foo left join (select 'b' c2, * from generate_series(1,5) s) bar using (s) where bar.s is null;
 s  | c1 | c2
----+----+----
  6 | a  |
  7 | a  |
  8 | a  |
  9 | a  |
 10 | a  |
 11 | a  |
 12 | a  |
(7 rows)

???

Velleicht kannst das, was Du willst (was Du hast und was Du erwartest) mal etwas genauer beschreiben.

Andreas
 

gberisha

Neuer Benutzer
Beiträge
2
Ich bekomme folgendes ergebniss in der Ersten Abfrage (A1)
sID | c1 | c2
---+----+----
1 | a | b
2 | a | b
3 | a | b
4 | a | b
5 | a | b

und in der Zweiten bekomme ich folgendes

sID | c1 | c2
---+----+----
2 | a | b

Und ich will dies

sID | c1 | c2
---+----+----
1 | a | b
3 | a | b
4 | a | b
5 | a | b

Meine Frage brauche ich einen bestimmten Join (Ich habe alle ausprobiert, keiner hat funktioniert)
oder eine bestimmte vorgehensweise

Vielen dank
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.423
I

Und ich will dies

sID | c1 | c2
---+----+----
1 | a | b
3 | a | b
4 | a | b
5 | a | b

Meine Frage brauche ich einen bestimmten Join (Ich habe alle ausprobiert, keiner hat funktioniert)
oder eine bestimmte vorgehensweise

Vielen dank

Okay. Nach Rom führen bekanntlich viele Wege.

Code:
test=*# select * from t1;
 sid | c1 | c2           
-----+----+----
   1 | a  | b
   2 | a  | b
   3 | a  | b
   4 | a  | b
   5 | a  | b
(5 rows)

test=*# select * from t2;
 sid | c1 | c2
-----+----+----
   2 | a  | b
(1 row)

test=*# select * from t1 except select * from t2 order by 1;
 sid | c1 | c2
-----+----+----
   1 | a  | b
   3 | a  | b
   4 | a  | b
   5 | a  | b
(4 rows)

test=*# select t1.* from t1 left join t2 using (sid) where t2.sid is null;
 sid | c1 | c2
-----+----+----
   1 | a  | b
   3 | a  | b
   4 | a  | b
   5 | a  | b
(4 rows)

Sollte in M$SQL genaus so gehen, vermutlich...

Andreas
 
Oben