kossy Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 Servus ! Ich habe ein Datum in einer Tabelle meiner Datenbank stehen und möchte nun überprüfen ob dieses Datum in einem bestimmten Intervall liegt. Hier mal der ganze Code meines Select-Statements: select gesamtbetrag, vorname, name from (select name, vorname, sum(menge*preis) as gesamtbetrag from mitarbeiter m inner join bestellung b on m.pers_nr = b.pers_nr inner join bestellposition bp on b.pers_nr = bp.pers_nr an b.bestell_nr = bp.bestell_nr inner join wird_abgebildet_auf waa on bp.katalog_nr = waa.katalog_nr and bp.pers_nr = waa.pers_nr and bp.bestell_nr = waa.bestell_nr inner join lieferaehigkeit lfk on waa.katalog_nr = lfk.katalog_nr where to_date(datum,'dd.mm.yyyy') between to_date('15.05.08','dd.mm.yyyy') and to_date('20.05.08','dd.mm.yyyy') and lower(name) like '%von%' group by name, vorname ); Die fettmarkierte Stelle zeigt den gewünschten Vergleich innerhalb der where Klausel. Ich bekomme ständig die Meldung, dass die rechte Klammer fehlt Verstehe allerdings nicht warum. Kann ich einen Datumsvergleich so überhaupt durchführen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 Hallo, müssen virtuelle Tabellen nicht einen Namen haben? select gesamtbetrag, vorname, name from ( .... ) x; [/code] Sonst kommentier die beween Bedingung mal aus und schau ob es dann läuft. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 on b.pers_nr = bp.pers_nr an Meiner Meinung nach müsste dies on b.pers_nr = bp.pers_nr AND lauten. Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kossy Geschrieben 18. Juni 2008 Autor Teilen Geschrieben 18. Juni 2008 Es hat an dem "and" gelegen, weil ich dort ein d vergessen hatte. Außerdem habe ich noch einen Tabellennamen falschgeschrieben. Ich gehe mal davon aus, dass ich die Datumsabfrage so ich es mir vorgestellt habe, ausführen kann. Bei einem anderen Beispiel, was ich ausprobiert habe, klappte es. Mal was anderes: Wie ihr in meinem Beispielcode sehen konntet, habe ich mehrere Tabellen mit Inner joins und der on-Klausel verknüpft. Wenn ich dasselebe Beispiel mit einem einfach JOIN Befehl und der using Klausel abarbeite, komme ich zu einem anderen Ergebnis. Was ist denn nun besser? Inner Joins oder die andere Variante? Hier der alternative Quellcode: SELECT sum(menge*preis)||' EURO' AS "Gesamtbetrag", vorname||' '||name AS "Besteller" FROM bestellposition JOIN bestellung USING(bestell_nr, pers_nr) JOIN wird_abgebildet_auf USING (bestell_nr,pers_nr, katalog_nr) JOIN lieferfaehigkeit USING(katalog_nr, lief_nr) JOIN mitarbeiter USING(pers_nr) WHERE datum between to_date('15.06.2006','DD.MM.YYYY') AND to_date ('20.06.2006','DD.MM.YYYY') GROUP BY name, vorname HAVING UPPER(name)LIKE '%VON RAND%'; Datnekbank ist im Anhang !! Vielen Dank !!Inhalt_Tables_1Seite.pdf 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.