-
Plage de date
Bonjour à tous.
Voila je rencontre un problème de sélection d'articles dans mysql.
j'ai 2 tables. Une article avec id_article, titre, contenu... et une qui est affichage avec id, id_article, date_debut, date_fin.
dans affichage je ne peux pas avoir un article qui soit contenu 2 fois dans les même date:
exemple: article1 date_debut: 19/03/2012 date fin:30/03/2012
article1 date_debut: 29/03/2012 date_fin: 07/04/2012 (ça devrait être impossible car le 29 et le 30 il est déjà publié)
comment faire ce contrôle?
Merci.
-
fait un GROUP BY date_debut
-
en fait ma requête est celle-ci:
Code:
SELECT * FROM article WHERE id = '17' AND id NOT IN (SELECT article_id FROM affiche WHERE date_fin > $_POST['date_debut'])
Mais ça me sort les enregistrement qui peuvent se trouver plusieurs mois après donc c'est pas bon, je dois rester dans la plage des dates de début et de fin
-
Euh... GROUP BY ? Pas sûr que ça aide beaucoup !
Franck, tu veux vérifier s'il existe déjà une ligne dans la table affichage pour laquelle la période que tu veux publier se chevauche avec la période déjà enregistrée.
Soit la période enregistrée définie par la date de début D1 et la date de fin F1.
Soit la période à enregistrer définie par la date de début D2 et la date de fin F2.
Les deux périodes se chevauchent si l'une de ces condition est remplie :
1) D1 <= F2 <= F1 : F2 BETWEEN D1 AND F1
2) D1 <= D2 <= F1 : D2 BETWEEN D1 AND F1
3) D2 <= D1 <= F1 <= F2 : D2 <= D1 AND F1 <= D2
Il te suffit de mettre ces conditions dans le WHERE de la requête de vérification.
-
Super ça fonctionne comme ça.
Merci