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

einen join erneut schneiden

Dieses Thema im Forum "Oracle" wurde erstellt von mullekular, 17 Juni 2013.

  1. mullekular

    mullekular Benutzer

    moin nochmals,

    ich habe folgenden join;

    select p.arten_id
    from checkliste p
    left outer join arten_hat_beobachtungen ab
    on (p.arten_id = ab.arten_ID)
    where ab.arten_id is null;

    dieser liefert mir die ID,s aus checkliste die nicht in arten_hat_beobachtungen stehen!

    funktioniert auch soweit!
    ich möchte diesen join nun schneiden mit einer tabelle arten, in der die artenID, und die dazugehörigen namen der arten stehen. Damit ich dem User nicht nur die Vogel_ID geben kann, sondern auch die dazugehörigen namen der Vögel. und die muss ich aus der Tabelle ARTEN ziehen.

    das result des obigen joins ist z.b. Arten_ID = 14

    Im Tabel ARTEN steht (id,deutschername) also sowas hier: 14,' Storch', 'stork'

    der user soll nun nihct die id returned bekommen sondern eben 'stroch','stork'

    Ich hoffe das war verständlich...

    Vielen Dank
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Du joinst Deine Arten-Tabelle mit dazu und fragst aus dieser das Feld 'deutschername' im select ab. Das schaffst Du!
     
  3. mullekular

    mullekular Benutzer

    ich komme dann auf sowas hier:

    CREATE OR REPLACE FORCE VIEW "ABL554"."GESEHENEARTENnotnew" ("ARTEN_ID", "DEUTSCHER_NAME", "LAT_NAMICUS", "ENGLISCHER_NAME") AS
    select
    x.arten_id,
    x.deutscher_name,
    x.lat_namicus,
    x.englischer_name
    from Arten x
    join (checkliste p
    left outer join arten_hat_beobachtungen ab
    on p.arten_id = ab.arten_ID
    where ab.arten_id is null)
    on x.arten_ID = p.arten_ID
    ;

    ich habe einfach einen arten join drum rum gebaut. er meckert wegen einer fehlenden klammer. ich sehe den fehler nicht.

    Eer mecker in Zeile 198. das ist jene welche mit "where" beginnt. muss ich das jetzt im inner join anders klammern?

    Fehler beim Start in Zeile 188 in Befehl:
    CREATE OR REPLACE FORCE VIEW "ABL554"."GESEHENEARTENnotnew" ("ARTEN_ID", "DEUTSCHER_NAME", "LAT_NAMICUS", "ENGLISCHER_NAME") AS
    select
    x.arten_id,
    x.deutscher_name,
    x.lat_namicus,
    x.englischer_name
    from Arten x
    join (checkliste p
    left outer join arten_hat_beobachtungen ab
    on p.arten_id = ab.arten_ID
    where ab.arten_id is null)
    on x.arten_ID = p.arten_ID
    Fehler bei Befehlszeile:198 Spalte:3
    Fehlerbericht:
    SQL-Fehler: ORA-00907: Rechte Klammer fehlt
    00907. 00000 - "missing right parenthesis"
    *Cause:
    *Action:
     
  4. akretschmer

    akretschmer Datenbank-Guru

    allgemein so:

    Code:
    select ...
    from table_a left join table_b on ... left join table_c on ... where ...
    
    Du suchst in Deinem Falle etwas wie

    Code:
    select ...
    from table_a left join (select ... ) as table_b on ...
    
    Andreas
     
  5. mullekular

    mullekular Benutzer

    hä? egal ich versuche es jetzt erstmal anders herum. ich schneide die beiden tables erst. hab trotzdem dank.
     
  6. mullekular

    mullekular Benutzer

    es lag an dem where... wie vermutet. auch bei geschalteten joins gehören die where bedingungen hinter die joins. auch wenn sie innere teile betreffen.
     
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