themaster Geschrieben 9. September 2002 Teilen Geschrieben 9. September 2002 :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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
byte Geschrieben 9. September 2002 Teilen Geschrieben 9. September 2002 Wo genau liegt den das Problem ? Wenn etwas nicht Funktioniert kann eine Exception sehr hilfreich sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
themaster Geschrieben 9. September 2002 Autor Teilen Geschrieben 9. September 2002 Einen Fehler bei der Benennung der Tabellen und Spalten halte ich für nicht möglich. Der Fehlercode ist: "ORA-00933: SQL command no proberbly ended". Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AxlHammer Geschrieben 9. September 2002 Teilen Geschrieben 9. September 2002 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) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
themaster Geschrieben 9. September 2002 Autor Teilen Geschrieben 9. September 2002 Aber gleichsetzen ist so verdammt lahm. Ich habe immer gedacht Oracle wäre so gut.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 9. September 2002 Teilen Geschrieben 9. September 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
themaster Geschrieben 9. September 2002 Autor Teilen Geschrieben 9. September 2002 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). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Olli_Master Geschrieben 10. September 2002 Teilen Geschrieben 10. September 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth_Zeus Geschrieben 10. September 2002 Teilen Geschrieben 10. September 2002 AND (C.LIEFERSCHEIN_DATUM BETWEEN to_date('04.09.2002','DD.MM.YYYY') AND to_date('04.09.2002','DD.MM.YYYY')) 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
themaster Geschrieben 10. September 2002 Autor Teilen Geschrieben 10. September 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.