|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : juin 2008 Messages : 114 ![]() |
J’ai un souci avec la requête que voici :
Code :
J’ai essayé de rajouter une clause pour que la requête ne me sélectionne que les lignes qui on le max(wmvb .value) inférieur à la date du jour en ajoutant la clause date_fin < sysdate(), mais ce n’est pas permis par la syntaxe SQL sous MySQL. A part se servir de cette requête comme une sous requête (ce que je souhaite éviter), je ne vois pas trop quoi faire. Auriez-vous une autre solution ? D’avance merci pour votre aide. |
||
|
|
00
|
|
|
#2 | |||
![]() ![]() |
1) Les jointures s'écrivent depuis 1992 avec l'opérateur JOIN.
![]() 2) Un autre SGBD qu MySQL aurait refusé votre requête car toutes les colonnes ne faisant pas l'objet d'une fonction de regroupement, doivent figurer dans le GROUP BY ; MySQL est trop permissif. Conséquence, la date qu'affichera la requête est aléatoire ! ![]() 3) Tu ne devrais pas utiliser de mot réservé du langage SQL pour nommer tes colonnes et tes tables. ![]() 4) Je peux comprendre que tu souhaites éviter une sous requête mais je pense que dans ton cas tu ne peux y échapper, même avec ta requête renormalisée, si l'ajout de la date dans le regroupement ne te donne pas le résultat souhaité. Citation:
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : juin 2008 Messages : 114 ![]() |
Merci beaucoup, et ça m'a même permis de corriger une erreur dans ma requête et il me semblait bien que c'était pas bien difficile
![]() Pour le nom des champs des colonnes je suis entièrement d'accord avec mais malheureusement, j'hérite de l'appli et dans toute les table il y a des champs qui ont le nom date et value.... Pour les jointures interne, j'ai pris la mauvais habitude de ne pas utiliser inner join, je sais c'est mal, il faut que je m'astreigne à le faire. Sinon hormis le fait de respecter la norme, le SGBD traite plus vite les requêtes avec un inner join ? |
|
|
00
|
|
|
#4 | |
![]() ![]() |
Citation:
Mais en plus de respecter la norme, la syntaxe officielle avec JOIN permet de mieux distinguer ce qui relève de la jointure de ce qui relève de la restriction (WHERE) et permet d'éviter des erreurs grossières quand il y a de multiples jointures, du genre condition de jointure manquante ou instance de table manquante. J'ai déjà rencontré le cas pas mal de fois avec des requêtes postées sur les forums BDD de Developpez.com et simplement corrigées en les réécrivant avec la syntaxe normalisée.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com