Autor Zpráva
Enko
Profil
Ahoj,
hledám řešení jak vytvořit MySQL dotaz na následující logiku.
Mám data v tabulce. Každý záznam má svůj datum vložení. Ve vedlejší tabulce mám data "měsíční uzávěrky", kde každý měsíc má jeden den "uzávěrku" (standartně 25. den každého měsíce, ale může se měnit). A chci vytvořit dotaz, který mi bude zobrazovat data jen z aktuálního období na základě uzávěrky. Například teď je 28. 11. 2016 a aktuální období na základě nastavených uzávěrek je od 26-10-2016 00:00:00 do 29-11-2016 23:59:59. Tudíž chci zobrazit jen data z aktuálního období, které je v konkrétní uzávěrce.

Děkuji za každou pomoc.
TomášK
Profil
A co konkrétně je problém? Zjistíš datum minulé uzávěrky SELECT MAX(datum) FROM uzaverky WHERE datum < NOW(), podobně datum příští uzávěrky, a pak ty dotazy použiješ v podmínce BETWEEN datum > (datum minulé uzávěrky) AND datum < (datum příští uzávěrky)
Enko
Profil
TomášK:
Jop, díky za postrčení správným směrem. Už to mám:

SELECT *
FROM   zmeny
WHERE  ( kdy_zadal > (SELECT Max(uzaverka_mesice.uzaverka)
                      FROM   uzaverka_mesice
                      WHERE  uzaverka_mesice.uzaverka < Now())
         AND kdy_zadal < (SELECT Min(uzaverka_mesice.uzaverka)
                          FROM   uzaverka_mesice
                          WHERE  uzaverka_mesice.uzaverka > Now()) )
       AND smazano = 0
ORDER  BY id DESC 
Kajman
Profil
Enko:
Právě v jedné z podmínek by mělo být povolené i rovnítko. To platí pro omezení na kdy_zadal (doklad s datumem uzávěrky by nikde nebyl) i pro Now (ve chvíli uzávěrky by se počítalo dvouměsíční období).

Osobně bych to z důvodu přehlednosti necpal do jednoho dotazu.
Enko
Profil
Kajman:
Ano, s tím rovnítkem máš pravdu. Toto mě nenapadlo. Moc děkuju, doplním.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: