Zum Inhalt springen

Probleme mit INNER JOIN


themaster

Empfohlene Beiträge

:confused: Ich habe ein Problem mit INNER JOINs und weiß nicht mehr weiter.

Es läuft einfach nicht. Wahrscheinlich habe ich da irgendwo einen Klammerfehler, aber ich bin ehrlich gesagt, auch nicht so wirklich fit mit hoher SQL.

Kann mir jemand da weiterhelfen?:confused:


select *
FROM tab_buchungskreis E INNER JOIN tab_lieferschein C
(
INNER JOIN tab_packstueck D
(
INNER JOIN tab_versandart v
(
INNER JOIN tab_frachtfuehrer f ON v.lfd_nr_Tab_frachtfuehrer = f.lfd_nr_Tab_frachtfuehrer
)
ON D.IST_LFD_NR_TAB_VSA = v.LFD_NR_TAB_VERSANDART
) ON D.lfd_nr_Tab_lieferschein = C.lfd_nr_Tab_lieferschein
)
ON C.LFD_NR_TAB_BUCHUNGSKREIS = E.LFD_NR_TAB_BUCHUNGSKREIS
WHERE
AND (F.LFD_NR_TAB_FRACHTFUEHRER = ('104'))
AND (C.LIEFERSCHEIN_DATUM BETWEEN to_date('04.09.2002','DD.MM.YYYY') AND to_date('04.09.2002','DD.MM.YYYY'))
AND (D.RETURN_CODE = ('1'))
[/PHP]

P.S. Es handelt sich um eine Oracle-Datenbank, falls das wichtig sein sollte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, bei Oracle kann man meiner Meinung nach leider nicht mit dieser Syntax arbeiten. Anstelle von INNER JOIN kannst du einfach die entsprechenden Tabellenspalten gleich setzen.

select E.*

from tab_buchungskreis E

, tab_lieferschein C

, tab_packstueck D

, tab_versandart v

, tab_fracht_fuehrer f

where v.lfd_nr_Tab_frachtfuehrer = f.lfd_nr_Tab_frachtfuehrer

and D.IST_LFD_NR_TAB_VSA = v.LFD_NR_TAB_VERSANDART

and D.lfd_nr_Tab_lieferschein = C.lfd_nr_Tab_lieferschein

and C.LFD_NR_TAB_BUCHUNGSKREIS = E.LFD_NR_TAB_BUCHUNGSKREIS

and F.LFD_NR_TAB_FRACHTFUEHRER = '104'

and C.LIEFERSCHEIN_DATUM BETWEEN (C.LIEFERSCHEIN_DATUM BETWEEN to_date('04.09.2002','DD.MM.YYYY') AND to_date('04.09.2002','DD.MM.YYYY'))

AND (D.RETURN_CODE = ('1'))

SO müsste es klappen...(wenn ich das mit dem INNER JOIN richtig verstanden hab)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von themaster

select *

...

WHERE

AND (F.LFD_NR_TAB_FRACHTFUEHRER = ('104'))

...

kann es sein das da der Fehler liegt, das AND direkt nach dem WHERE ? Denn mit den verschachtelten Joins sollte doch eigentlich kein Problem sein bei Oracle (schliesslich schafft sogar Access das ;)) ?

gruß

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von tauron

kann es sein das da der Fehler liegt, das AND direkt nach dem WHERE ? Denn mit den verschachtelten Joins sollte doch eigentlich kein Problem sein bei Oracle (schliesslich schafft sogar Access das ;)) ?

gruß

Christian

Nein, daran lag es nicht. Das ist mir später auch aufgefallen und habe es ohne das fehlerhaft AND probiert, das gleiche Ergebnis, der gleiche Fehler.

Access, MSSQL, mySQL usw. können das alle. INNER JOIN sind ja auch IMHO SQL-Standard. Aber nicht Oracle.

Ich darf jetzt bei Oracle einige Minuten für die Ausführung der Abfrage warten, bei der gleichen Abfrage (mit inner joins) von Access heraus, ging es in weniger als einer Minute (mit den gleichen Datentabellen).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bis einschließlich Oracle8i gibt es den JOIN-Syntax nicht unter Oracle. Die Oracle-Variante mit der WHERE-Bedingung sollte bei einer "guten" DB-Konfiguration und vor allem korrekt gewählten Indices (insbesondere für die Fremdschlüssel) mindestens genauso schnell sein wie Access. Diese Relation ist abhängig vom Datenvolumen. Bei 100 DS an einem schnellen Desktop-Arbeitsplatz wird Access natürlich schneller sein :)

Wenns interssiert: Lt. Oracle wird mit der 9er-Version der DB der JOIN-Syntax als Zusatz unterstützt. (nach ANSI/ISO SQL99)

Oracle Technet News

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Darth_Zeus

imho liegt der fehler genau hier

AND(xxx(yyy) AND

da steigt er aus, weil eine klammer zu wenig, auch wenn du sie nach dem nächsten AND wieder schliesst

greets

flo

Die BETWEEN-Syntax ist schön korrekt. Wieso auch nicht alle Klammern werden wieder ordentlich geschlossen.

Wie schon festegestellt ist das Problem, das Oracle 8 zwar Java untetstützt, aber nicht vollständig den SQL-Standard. :(

Danke für all die Hilfe, aber ich habe es nun wieder auf ganz viele WHERE-Gleichsetzungen umgestellt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...