sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forespørgsel til datodel

Dette er stort set det samme som Mostys svar, men med LEFT JOIN for at hente hændelser, der kun forekommer én gang. Dette vil hente alle begivenheder for i dag.

SELECT *
FROM `tblEvent`
LEFT JOIN `tblEventRecurring`
    ON `tblEvent`.`id` = `tblEventRecurring`.`event_id`
WHERE (`tblEvent`.`date` = CURRENT_DATE AND `tblEventRecurring`.`event_id` IS NULL)
OR (
    CURRENT_DATE BETWEEN `tblEvent`.`date` AND `tblEventRecurring`.`end_date`
    AND (
        (`tblEventRecurring`.`date_part` = 'D') OR
        (`tblEventRecurring`.`date_part` = 'W' AND DAYOFWEEK(`tblEvent`.`date`) = DAYOFWEEK(CURRENT_DATE)) OR
        (`tblEventRecurring`.`date_part` = 'M' AND DAYOFMONTH(`tblEvent`.`date`) = DAYOFMONTH(CURRENT_DATE))
    )
)

Jeg er ikke sikker på, om dette er til nogen nytte for dig, men tænkte, at jeg ville poste det, som jeg har gjort det nu

SELECT *
FROM `date_list`
LEFT JOIN (
    SELECT `tblEvent`.`id`, `tblEvent`.`date`, `tblEvent`.`name`, `tblEventRecurring`.`date_part`, `tblEventRecurring`.`end_date`
    FROM `tblEvent`
    LEFT JOIN `tblEventRecurring`
        ON `tblEvent`.`id` = `tblEventRecurring`.`event_id`
) AS `events`
    ON (
        `events`.`date` = `date_list`.`date`
    )
    OR (
        `date_list`.`date` BETWEEN `events`.`date` AND `events`.`end_date`
        AND (
            (`events`.`date_part` = 'D') OR
            (`events`.`date_part` = 'W' AND DAYOFWEEK(`events`.`date`) = DAYOFWEEK(`date_list`.`date`)) OR
            (`events`.`date_part` = 'M' AND DAYOFMONTH(`events`.`date`) = DAYOFMONTH(`date_list`.`date`))
        )
    )
WHERE `date_list`.`date` BETWEEN '2012-02-06' AND '2012-02-12'
ORDER BY `date_list`.`date`;

Det antager en date_list tabel bestående af en enkelt date felt, der indeholder en fortløbende liste over datoer.



  1. Atomic UPDATE for at øge heltal i Postgresql

  2. Postgres / hibernate-operator eksisterer ikke:tekst =bytea

  3. Hvordan kombinerer jeg resultaterne af to forespørgsler med bestilling?

  4. Hvordan får man adgang til var-mappen og en MySQL-databasemappe med .frm-, .MYD- og .MYI-filer i hver tabel i CPanel?