kossy Geschrieben 18. Juni 2008 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?
robotto7831a Geschrieben 18. Juni 2008 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
dbwizard Geschrieben 18. Juni 2008 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
kossy Geschrieben 18. Juni 2008 Autor 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden