Voor de ontwikkeling van m'n eigen cms-je loop ik tegen een sql vraagstelling waar ik geen (goede) oplossing voor vind.
Ik wil graag een sql (eventueel in combinatie met php) query opzetten aan de hand van voorkeur condities. Het gaat hier om de selectie van een pagina versie. Ik heb de volgende twee tabellen (cellen die er niet toe doen heb ik even weggelaten):
Tabel 1: pages
Tabel 2: page_version
Nu wil ik graag de volgende pagina versie ontvangen:
- Pagina is gepubliceerd (published = 1) EN publicatiedatum is in het verleden (publish_date <= mktime()) EN vervaldatum is in de toekomst of null (expire_date >= mktime() or expire_date == "").
- Als er geen pagina is die gepubliceerd is (published = 0), dan wil ik evengoed de pagina met publicatiedatum is in het verleden (publish_date <= mktime()) EN vervaldatum is in de toekomst of null (expire_date >= mktime() or expire_date == "").
- Als er geen pagina die niet gepubliceerd (published = 0) en de publicatiedatum is >= nu (mktime()) dan wil ik deze.
- Anders wil de pagina die overblijft.
Uit de query moet altijd 1 en maximaal 1 paginaversie komen en daarbij dus de meest actuele gepubliceerd of geplande paginaversie.
Graag jullie hulp!
Ik wil graag een sql (eventueel in combinatie met php) query opzetten aan de hand van voorkeur condities. Het gaat hier om de selectie van een pagina versie. Ik heb de volgende twee tabellen (cellen die er niet toe doen heb ik even weggelaten):
Tabel 1: pages
id |
autoincrement id |
Tabel 2: page_version
id | page_id | published | publish_date | expire_date |
autoincrement id | id from pages | 0 (niet gepubliceerd) of 1 (wel gepubliceerd) | tijd in seconden (mktime()) | tijd in seconden (mktime()) |
Nu wil ik graag de volgende pagina versie ontvangen:
- Pagina is gepubliceerd (published = 1) EN publicatiedatum is in het verleden (publish_date <= mktime()) EN vervaldatum is in de toekomst of null (expire_date >= mktime() or expire_date == "").
- Als er geen pagina is die gepubliceerd is (published = 0), dan wil ik evengoed de pagina met publicatiedatum is in het verleden (publish_date <= mktime()) EN vervaldatum is in de toekomst of null (expire_date >= mktime() or expire_date == "").
- Als er geen pagina die niet gepubliceerd (published = 0) en de publicatiedatum is >= nu (mktime()) dan wil ik deze.
- Anders wil de pagina die overblijft.
Uit de query moet altijd 1 en maximaal 1 paginaversie komen en daarbij dus de meest actuele gepubliceerd of geplande paginaversie.
Graag jullie hulp!
It's a beautiful day!