pb de requête avec conditions, débutant
BOnjour,
je m'arrache les cheveux sur qq chose dont la réponse doit êter extra simple, comme d'habitude.
J'ai une BDD avec pour chaque ligne 5 dates, chacune représentée par une colonne jour, une colonne mois, une colonne année. Quand il n'y a rien, la cellule est NULL
je souhaite sortir uniquement les lignes qui comprennent au moins une date supérieure à la date du jour. Or ma requête me sort toutes les dates.
N'ayant pas trop su comment bien l'écrire,je l'ai fractionnée en deux : SOIT mois supérieur au mois de la date OU mois égal au mois de la date et jour supérieur à aujourd'hui
Voila ce que ca donne avec un exemple copié dans PHPmyadmin :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| requête SQL:SELECT count( * ) AS nb_res
FROM guide, aide_st
WHERE guide.structure = aide_st.s_clef
AND s_clef = "189"
AND (
(
mois1 > "11"
AND annee1 >= "2006"
)
OR (
mois2 > "11"
AND annee2 > "2006"
)
OR (
mois3 > "11"
AND annee3 >= "2006"
)
OR (
mois4 > "11"
AND annee4 >= "2006"
)
OR (
mois5 > "11"
AND annee5 >= "2006"
)
OR (
jour1 > "29"
AND mois1 = "11"
AND annee1 >= "2006"
)
OR (
jour2 > "29"
AND mois2 = "11"
AND annee2 >= "2006"
)
OR (
jour3 > "29"
AND mois3 = "11"
AND annee3 >= "2006"
)
OR (
jour4 > "29"
AND mois4 = "11"
AND annee4 >= "2006"
)
OR (
jour5 > "29"
AND mois5 = "11"
AND annee5 >= "2006"
)
OR (
rythme != ""
)
) |
et le code donne
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
{$sql1 .= ' AND s_clef= "'.$_SESSION['s_clef'].'"';
$sql1 .= ' AND
((mois1 >= "'.$_SESSION['mois'].'" AND annee1 >= "'.$_SESSION['annee'].'" )
OR
(mois2 >= "'.$_SESSION['mois'].'" AND annee2 >= "'.$_SESSION['annee'].'" ) OR
(mois3 >= "'.$_SESSION['mois'].'" AND annee3 >= "'.$_SESSION['annee'].'" ) OR
(mois4 >= "'.$_SESSION['mois'].'" AND annee4 >= "'.$_SESSION['annee'].'" ) OR
(mois5 >= "'.$_SESSION['mois'].'" AND annee5 >= "'.$_SESSION['annee'].'" )
//le jour en plus
OR (jour1 > "'.$_SESSION['jour'].'" AND mois1 = "'.$_SESSION['mois'].'" AND annee1 >= "'.$_SESSION['annee'].'" )
OR (jour2 > "'.$_SESSION['jour'].'" AND mois2 = "'.$_SESSION['mois'].'" AND annee2 >= "'.$_SESSION['annee'].'" )
OR (jour3 > "'.$_SESSION['jour'].'" AND mois3 = "'.$_SESSION['mois'].'" AND annee3 >= "'.$_SESSION['annee'].'" )
OR (jour4 > "'.$_SESSION['jour'].'" AND mois4 = "'.$_SESSION['mois'].'" AND annee4 >= "'.$_SESSION['annee'].'" )
OR (jour5 > "'.$_SESSION['jour'].'" AND mois5 = "'.$_SESSION['mois'].'" AND annee5 >= "'.$_SESSION['annee'].'" ) OR(rythme != "")) ';
} |
j'ai pourtant des lignes prises en compte, alors que
rythme est vide
jours 1=06
mois1 = 09
annee1 = 2006
les variables de session jour, mois, année sont définies avec {$jour=date("Y-m-d");
Merci à ceux qui pourront m'aider