title image


Smiley Ora 8.1 Im VIEW ein Joinanteil falsch ??? / View nach komplilieren ungültig
Hallo zusammen

der unter anbegbildete VIEW ist plötzlich ungültig wenn ich ihn im DBA Studio kompiliere. Vorher ist er OK und ich kann auch via ODBC darauf zugreifen. Weiß einer warum das so ist.



Wenn ich in dem VIEW unten das auskomméntierte mit einspile funktioniert er nicht richtig (so funktioniert) er un ich weiß nicht warum. Ich denke das ist nicht ganz richtig zusammengejoint.



Hintergrund ich brauche einen VIEW über exakt alle Stücklistenpositionen pstp



die pstp ist über die komponenten_art_nr mit den beiden Artikeltabellen pawu und paws eindeutig verknüpft.



Außerdem über Outer Joins mit zwei Tabellen in denen Preise enthalten sind (pprk und pplp)

Das läuft soweit alles das Problem ist das Feld Firmenbezeichnung aus der Adresstabelle das mit dem Feldstammlieferant in der paws verknüpft ist, wobei das Feld Stammlieferant gefüllt sein kann, jedoch nicht gefüllt sein muss.

Ich dachte mit der Bedingung a.stammlieferant = f1.adress_id(+). Tut es aber nicht. Ich kann mit SQL dann nur noch bedingt auf den VIEW zugreifen. Mache ich einen eine Select count(*) from VIEW, geht mir die Abfrage auf die Bretter. Per ODBC geht dann gar nichts merhr. Seltsammerweise liefert ein Select* from VIEW where artikel_nr = '4711' ein plausibles Ergebnis.



So das ist der Code und es geht um die grün auskommentierten Sachen











     

CREATE or REPLACE VIEW SCHW_GRUNDDATENSTUECKLISTE AS

SELECT 

s.artikel_nr, 

u.bezeichnung_1, 

u.bezeichnung_2, 

a.aws_feld_1_x30,

'--f1.firmen_bezeichnung AS FIRMEN_BEZEICHNUNG,

s.komponenten_art_nr,

s.zeichngs_pos_nr,

s.feld_3_x35,

s.positions_nr,

s.guelt_kz,

s.guelt_datum,

s.komponenten_menge,

s.mengenbasis,

s.laenge_mass,

s.breite,

s.dimensions_kenner,

s.entnahmelagerort,

s.stl_artenschluessel,

s.veraenderbarkeits_kz,

s.vorlaufzeit,

s.einbauhinweis,

s.feld_1_x30,

s.feld_2_x30,

s.feld_4_x8,

s.feld_5_n8,

s.feld_6_n8,

s.feld_7_n7v3,

s.feld_8_n7v3,

s.feld_9_n7v3,

p1.preis_eigenwaehrung AS K1,

p2.preis_eigenwaehrung AS K2,

p3.preis_eigenwaehrung AS K3,

t1.preis_vk AS DP,

t2.preis_vk AS VP,

t3.preis_vk AS EP,

t4.preis_vk AS KP,

t5.preis_vk AS LP

   FROM paws a, pawu u, pstp s,

' Select auf die PADR  

  '--(SELECT * FROM padr  WHERE EXISTS 

     --(SELECT 1 FROM paws where paws.stammlieferant = padr.adress_id) and zuordnung = 'L' and folge_nr = '1')f1,

   (SELECT * FROM pplp  WHERE preislisten_nr = 1 )p1,

   (SELECT * FROM pplp  WHERE preislisten_nr = 2 )p2,

   (SELECT * FROM pplp  WHERE preislisten_nr = 3 )p3,

   '--Das hier läuft!!!

   (SELECT * FROM pprk  WHERE (artikel_nr, g_datum) in  

      (SELECT  artikel_nr, max(g_datum) from pprk WHERE preis_kz = 'A' GROUP by artikel_nr) AND preis_kz = 'A')t1,

   (SELECT * FROM pprk  WHERE (artikel_nr, g_datum) in 

      (SELECT  artikel_nr, max(g_datum) from pprk WHERE preis_kz = 'B' GROUP by artikel_nr) AND preis_kz = 'B')t2,

   (SELECT * FROM pprk  WHERE (artikel_nr, g_datum) in 

     (SELECT  artikel_nr, max(g_datum) from pprk WHERE preis_kz = 'C' GROUP by artikel_nr) AND preis_kz = 'C')t3,

   (SELECT * FROM pprk  WHERE (artikel_nr, g_datum) in 

      (SELECT  artikel_nr, max(g_datum) from pprk WHERE preis_kz = 'D' GROUP by artikel_nr) AND preis_kz = 'D')t4,

   (SELECT * FROM pprk  WHERE (artikel_nr, g_datum) in 

       (SELECT  artikel_nr, max(g_datum) from pprk WHERE preis_kz = 'E' GROUP by artikel_nr) AND preis_kz = 'E')t5

WHERE s.artikel_nr like '%'

AND a.paws_artikel_nr = u.artikel_nr

AND s.komponenten_art_nr = u.artikel_nr

AND s.komponenten_art_nr = a.paws_artikel_nr

'Join Bedingung die wohl nicht hinhaut

'--AND a.stammlieferant = f1.adress_id(+)

AND s.komponenten_art_nr = p1.artikel_nr (+)

AND s.komponenten_art_nr = p2.artikel_nr (+)

AND s.komponenten_art_nr = p3.artikel_nr (+)

AND s.komponenten_art_nr = t1.artikel_nr (+)

AND s.komponenten_art_nr = t2.artikel_nr (+)

AND s.komponenten_art_nr = t3.artikel_nr (+)

AND s.komponenten_art_nr = t4.artikel_nr (+)

AND s.komponenten_art_nr = t5.artikel_nr (+)

GROUP BY 

s.artikel_nr,

u.bezeichnung_1, 

u.bezeichnung_2, 

a.aws_feld_1_x30,

s.komponenten_art_nr,

s.positions_nr,

'--f1.firmen_bezeichnung,

s.zeichngs_pos_nr,

s.feld_3_x35,

s.positions_nr,

s.guelt_kz,

s.guelt_datum,

s.komponenten_art_nr,

s.komponenten_menge,

s.mengenbasis,

s.laenge_mass,

s.breite,

s.dimensions_kenner,

s.entnahmelagerort,

s.stl_artenschluessel,

s.veraenderbarkeits_kz,

s.vorlaufzeit,

s.einbauhinweis,

s.feld_1_x30,

s.feld_2_x30,

s.feld_4_x8,

s.feld_5_n8,

s.feld_6_n8,

s.feld_7_n7v3,

s.feld_8_n7v3,

s.feld_9_n7v3,

p1.preis_eigenwaehrung,

p2.preis_eigenwaehrung,

p3.preis_eigenwaehrung,

t1.preis_vk,

t2.preis_vk,

t3.preis_vk,

t4.preis_vk,

t5.preis_vk;

commit; 







Danke für drüber gucken
________________________________

"Per Anhalter durch die Galaxis":

Nach nur 7,5 Millionen Erdenjahren war das Rätsel gelöst. Deep Thought verkündete mit unsagbarer Erhabenheit und Ruhe: 42!!

Antworten auf zwar weitaus weniger bewegende Fragen bekommst hier deutlich schneller:

SQL-Tips das SQL-Wiki

Bis Denne Frank


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: