Syntax Problem bei joins !?

Guten Tag!

select a.su0003 as Datum,sum(a.su0005) AS Personalkosten, c.ma5006
                        from fibu.kontensummen a
                        join zmis.kontenplan b
                        join zmis.mandant c
                        on a.su0002 = b.kp0001
                        on a.ma0001 = c.ma0001
                        where a.ma0001='1000112000'
                        and b.kp0000 = c.ma5006
                        and a.su0003 between 2005-01-01 and     2005-12-31
                        and b.kp0003 = '430'
                        group by a.su0003 order by a.su0003;

bekomme einen Error: relation “a” does not exist!
warum???

Hallo n00b_imp,

und woher ist dann “a” irgendwie definiert???

Moin!

Zugegeben, ich bin kein Experte, was JOINs angeht.

Aber “relation “a” does not exist” ist schon relativ eindeutig.

Kann es sein, das dein Tabellen-Alias “a” für “fibu.kontensummen” in dem JOIN nicht bekannt ist, daß es sich nur auf den vorstehenden SELECT bezieht?

Wenn ich das richtig interpretiere, hast du eigentlich gar keine Notwendigkeit Aliase zu verwenden, funktioniert dein Script vielleicht, wenn den alias wegläßt?

Wenn ich mich nicht vertippt habe - so:

select
  kontensummen.su0003 as Datum,
  sum(kontensummen.su0005) AS Personalkosten,
  mandant.ma5006 
from
  fibu.kontensummen
  join zmis.kontenplan 
  join zmis.mandant 
    on kontensummen.su0002 = kontenplan.kp0001 
    on kontensummen.ma0001 = mandant.ma0001 
where kontensummen.ma0001='1000112000' 
and   kontenplan.kp0000 = mandant.ma5006 
and   kontensummen.su0003 between 2005-01-01 and 2005-12-31 
and   kontenplan.kp0003 = '430' 
group by
  kontensummen.su0003
order by
  kontensummen.su0003;

(ich bin mal davon ausgegangen, daß “fibu.” und so deine Schemata sind)

Ach noch was … weil die Felder immer mit “ma…” beginnen, kann es sein, daß in der Zeile:

on a.ma0001 = c.ma0001

“a.ma0001” falsch ist? müßte das nicht aus der Tabelle: “mandant” welches den Alias “c” hat?!

Hallo n00b_imp,

meine Antwort ist falsch. Ich habe nicht richtig hingeschaut.

Die Meldung “relation “a” does not exist!” für a == TABLE bekommst Du immer wenn eine Tabelle nicht existiert.



mfg

fristo

also irgendwie funktioniert das leider immer noch nicht!
ich habs jetzt mal über ein subquery versucht…sieht dann so aus:

select a.su0003 as Datum,sum(a.su0005) AS Personalkosten
                            from fibu.kontensummen a
                            join zmis.kontenplan b
                            on a.su0002 = b.kp0001
                            where a.ma0001= '1234567890'
                            and b.kp0000 = (select ma5006 from zmis.mandant where ma0001 = '1000112000')
                            and a.su0003 between 2005-01-01 and 2005-12-31
                            and b.kp0003 = '430'
                            group by a.su0003 order by a.su0003

ich bekomme aber kein ergebnis zurück! :cry:

[quote=“n00b_imp”]Guten Tag!

select a.su0003 as Datum,sum&#40]

bekomme einen Error: relation "a" does not exist!
warum???[/quote]

[code]...FROM fibu.kontensumme AS a...

Probiers mal mit ner korrekten Definition von den Aliases.

Ähm - für Feldaliases ok, aber bei Tabellennamen ist das schon völlig korrekt, wie er es gemacht hat.

Hi Dusty,
hast du die Abfragen denn mal zerlegt???

select a.su0003 as Datum,a.su0005 as Personalkosten
from fibu.kontensummen a
where a.ma0001= ‘1234567890’
and a.su0003 between 2005-01-01 and 2005-12-31

select * from zmis.kontenplan b
where b.kp0003 = ‘430’

select ma5006 from zmis.mandant where ma0001 = ‘1000112000’

Soweit ich weiss müßte bei der Variante von dir SQL ein INNER JOIN verwenden. D.h. das alle selektierten Spalten müssen zusammenpassen. Ansonsten mal mit LEFT JOIN probieren.

Gruss
Markus
PS:
Unter http://www.sql-und-xml.de/xml/sql-tutorial/index.xml findet man ein sehr gutes SQL-Tutorial.

Hallo

Kann es sein, dass eines deiner Felder (oder Ergebnisse) den Wert NULL hat? Denn:

ein beliebiger Wert + NULL = NULL

bei postgresql!

Gruss
Rolf

Stimmt. Kannst es weglassen. Trotzdem schreib ich es immer dazu, liest sich einfach besser.