Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Alles in Erster Abfrage ohne Zweite Abfrage

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von gberisha, 15 März 2013.

  1. gberisha

    gberisha Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru


    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
     
  3. gberisha

    gberisha Neuer Benutzer

    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
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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
     
    gberisha gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden