Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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 :rolleyes: Verstehe allerdings nicht warum.

Kann ich einen Datumsvergleich so überhaupt durchführen?

Geschrieben

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

Geschrieben

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 !!

post-50137-14430447970167_thumb.jpg

Inhalt_Tables_1Seite.pdf

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...