probleme de clause sur une date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de clause sur une date

Re: probleme de clause sur une date

par meteo71 » 22 févr. 2011, 13:51

Désolé si je suis long à comprendre !! :D

j'ai essayé la requête, et ça fonctionne très bien.
Par contre, cela ne fait pas tout à fait ce que je veux. Il faut en plus que cette requête se fasse entre 2 dates, jai donc essayé ça :
SELECT SUM(TN) as moyTN FROM x where (date BETWEEN $date1 AND $date2  AND month(date) = '".$mois."' )
ça ne marche pas et ça, le résultat est nul
SELECT SUM(TN) as masomme From  x WHERE  month(date) = '".$mois."' IN (SELECT TN FROM climatoauxerre where (date BETWEEN $date1 AND $date2))
ça tourne en rond mais ne donne rien non plus avec au bout d'un moment : Query execution was interrupted

Je ne dois pas être loin mais je bloque encore,

merci

Re: probleme de clause sur une date

par Mazarini » 22 févr. 2011, 10:20

Bonjour,

Tout t'as déjà expliqué :
$mois = "01";
$sql = 'SELECT SUM(NB) as masomme From x WHERE  month(date) = '.$mois;
$result = mysql_query($sql);
... 
A priori, essayes la requête avec PHPmyadmin pour voir si elle fonctionne.

Re: probleme de clause sur une date

par meteo71 » 22 févr. 2011, 08:20

bonjour,

je cherche mais je ne trouve toujours pas.

Voila en Fr ce que je veux faire :

faire la somme de tous les nombres entre 2 dates lorsque le mois = 01 (par exemple et par extension, mois = 02 ....)

j'ai donc ecris SELECT SUM(NB) as masomme From x WHERE (date BETWEEN $date1 AND $date2) AND ... ça ca marche mais ça prend tous les nombres et c'est la fin qui me bloque.

merci

Re: probleme de clause sur une date

par ouckileou » 09 févr. 2011, 01:35

SQL : language de requête pour base de données, il y a le SQL de base, et chaque SGBD a ces propres fonctions, notamment celles pour manipuler des dates, je t'ai filé le lien vers celle pour MySQL.

PHP: language de programmation, pour faire des pages web dynamiques. Pages web dynamiques que tu peux vouloir relier à une base de données. Le PHP va donc exécuter les requêtes SQL au moins de fonctions adaptées à chaque SGBD. Ici les fonctions PHP pour interagir avec une base MySQL : http://php.net/manual/fr/book.mysqli.php

Exemple, la fonction qui exécute une requête sur la base et te renvoie le résultat : http://www.php.net/manual/fr/mysqli.query.php
On lui passe en paramètre le code SQL de la requête, le serveur MySQL comprend ce SQL, exécute la requête, renvoie des résultats, que tu récupère dans ton code PHP comme retour de la fonction.

Avant de t'atteler à ton problème, je te conseille d'aller faire un tour sur le site phpdebutant, notamment sur cet article : http://phpdebutant.org/article66.php
Tu peux aussi lire l'article de Wikipédia sur SQL.

Car si déjà ce n'est pas clair, ça sera compliqué de t'aider :)

Re: probleme de clause sur une date

par meteo71 » 08 févr. 2011, 23:16

Est-ce que tu as bien compris la différence entre PHP et SQL?
c'est confus ...

la ou je ne comprend pas trop, c'est que j'ai un fichier php dans lequel se trouve cette requete sql ? mais lorsque j'appelle mon fichier, la commande MONTH(`date`) n'est pas reconnu ... par php donc c''est la ou je suis un peu perdu. :?:

Re: probleme de clause sur une date

par ouckileou » 08 févr. 2011, 22:13

Oui, c'est ce qui était rappelé dans mon message, PHP ne peut pas être utilisé pour interroger une base de données, c'est le SQL, PHP exécute la requête SQL

Voici les fonctions de dates pour MySQL : http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

Est-ce que tu as bien compris la différence entre PHP et SQL?

Re: probleme de clause sur une date

par meteo71 » 08 févr. 2011, 20:07

Quel est le soucis ? Dans un programme en PHP, ou en quoi que ce soit d'ailleurs, tu interroges toujours une base de données avec du SQL, et c'est PHP qui exécute cette requête.
- selectionner les infos qui ont MONTH() = ton mois, et DAY = ton mois
et bien, dans un premier temps, en php, MONTH(`date`) n'existe pas et je ne trouve la fonction équivalente

Re: probleme de clause sur une date

par ouckileou » 08 févr. 2011, 16:46

Quel est le soucis ? Dans un programme en PHP, ou en quoi que ce soit d'ailleurs, tu interroges toujours une base de données avec du SQL, et c'est PHP qui exécute cette requête.

Donc les pistes que t'a données develop78 sont bonnes, pour la manipulation des dates.

Avec MySQL, tu vas pouvoir dans ta requête :
- selectionner les infos qui ont MONTH() = ton mois, et DAY = ton mois
- les trier par ordre décroissant (ORDER BY)
- ne sélectionner que lq première ligne de résultat (LIMIT)

Re: probleme de clause sur une date

par meteo71 » 08 févr. 2011, 13:56

bonjour,

mon problème reste entier !

merci de votre aide

Re: probleme de clause sur une date

par meteo71 » 01 févr. 2011, 10:49

Tu as parlé d'une requête SQL
oui, mais en fait je me suis trompé et c'est plutôt php avec mysql

Re: probleme de clause sur une date

par devlop78 » 01 févr. 2011, 04:44

Tu as parlé d'une requête SQL ... LPAD existe bel et bien ...

Re: probleme de clause sur une date

par meteo71 » 31 janv. 2011, 18:56

bonsoir,
et merci de vous pencher sur mon problème.

Je m'aperçoit que je n'ai peut être pas posté au bon endroit car je n'ai pas précisé que je faisais cette requête au sein d'un programme en php et il me semble que la fonction YEAR (`date`); n'existe pas en php mais apparemment en sql !

Pour le reste, je sais que CONCAT existe pas LPAD (en cherchant, il semble que ce soit str_pad en php)

j'avoue que j'ai du mal à tout comprendre de la requête et peut être faudrait-il passer cette question dans le forum php (avec mes excuses)

merci

Re: probleme de clause sur une date

par devlop78 » 31 janv. 2011, 00:09

Dans MySQL (je donne la syntaxe MySQL mais il y en a plusieurs et les SGBD ont aussi l'équivalent), pour toute date bien formatée :

DAY(`date`) : donne le jour
MONTH(`date`) : donne le mois
YEAR (`date`) : donne l'année

Pour les String :

LPAD (String string, Integer x, Mixed? y) : Permet de compléter par la gauche une chaîne jusqu'à x caractères avec les caractères y

Donc on peut imaginer

SELECT MIN (CONCAT(LPAD(MONTH(`date`),2,'0'),LPAD(DAY(`date`),2,'0')) FROM ... WHERE YEAR(`date`) = 2010

probleme de clause sur une date

par meteo71 » 30 janv. 2011, 17:39

bonjour,

j'ai une table qui comprend une champ date de format AAAAMMJJ (ex : 20110130) et je ne peux pas modifier le format de ce champ.

J'ai besoin de faire une requête pour connaitre quelle est la valeur minimale qu'il y a eu le même jour et mois mais a une année antérieure : ex le 2010 01 30, le 2009 01 30, .... et ce jusqu'à la fin de la table.

je ne vois pas qu'elle clause Where je dois faire ? voila le début mais je coince pour la date. Il faut peut être faire une boucle mais je ne sais pas du tout faire :

SELECT MIN(TN) as minTN,date FROM climat where date= ....

Merci de votre aide

christophe