Filtr dat podle datumu   otázka

SQL

Dobrý den,

potýkám se s dotazem nad dvěma tabulkami. První tabulka tblPRODEJ obsahuje Datum, Zakaznik, Prodej. Druhá tabulka tblOP obsahuje obchodní podmínky pro zákazníky v danném obdobi, tj. Zakaznik, StartDate, EndDate, Procento. Pole StardDate určuje počátek platnosti obchodních podmínek, pole EndDate určuje konec platnosti obchodních podmínek. Jak napsat dotaz, tak aby pro každý řádek z tabulku tblProdej se hodnota z pole Prodej vynásobila hodnotou z pole Procento z tabulky tblOP.

Příklad:

tblProdej

Datum;Zakaznik;Prodej

1.1.2011;Zakaznik01;12000Kč

20.2.2011;Zakaznik01;15000Kč

tblOP

idZakaznik;StartDate;EndDate;Procento

Zakaznik01;1.1.2011;31.1.2011;10%

Zakaznik01;1.2.2011;15.3.2011;20%

Výsledek by pak měl být

1.1.2011;Zakaznik01;12000Kč*10%

20.2.2011;Zakaznik01;15000Kč*20%

Napsal jsem si tento SQL dotaz, ale nejsem si jistý, jestli je správně napsaný, výsledek dává správný, ale hledám nějaké jiné elegantnější řešení.

SELECT tblProdej.Datum, tblProdej.Zakaznik, tblProdej.Prodej, tblOP.StartDate, tblOP.EndDate, (tblProdej.Prodej*tblOP.Procento) as Vysledek
FROM tblProdej INNER JOIN tblOP ON tblProdej.Zakaznik = tblOP.Zakaznik
WHERE tblOP.StartDate<=[Datum] AND tblOP.EndDate>=[Datum]

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Váš dotaz se mi jeví jako správně napsaný - podle mě ho máte dobře. Jediná věc, která mě napadá, jak dotaz upravit, aby byl o něco málo kratší, je tato:

SELECT tblProdej.*, tblOP.StartDate, tblOP.EndDate, (tblProdej.Prodej * tblOP.Procento) AS Vysledek 
FROM tblProdej P INNER JOIN tblOP OP ON P.Zakaznik = OP.Zakaznik
 WHERE [Datum] BETWEEN OP.StartDate AND OP.EndDatum

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback