einen join erneut schneiden

mullekular

Benutzer
Beiträge
12
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
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.532
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!


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

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

mullekular

Benutzer
Beiträge
12
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:
 

akretschmer

Datenbank-Guru
Beiträge
9.532
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:

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
 
Werbung:

mullekular

Benutzer
Beiträge
12
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.
 
Oben