|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : juin 2008 Messages : 80 ![]() |
Bonjour,
Je rencontre actuellement un problème assez étrange avec une requête SQL tournant de façon automatique chaque jour depuis plusieurs années et qui d'un coup rencontre l'erreur suivante : Subquery returns more than 1 row. Voici la requête en question : Code :
Edit: Plus étrange encore, sur un serveur de test étant une copie conforme du serveur de prod (même version mysql) la requête passe. Merci d'avance. |
||
|
|
00
|
|
|
#2 |
![]() ![]() |
Le message est clair : une sous-requête retourne plus d'une ligne. Il s'agit sans doute d'une des deux sous-requêtes figurant dans la partie SELECT de la première requête.
__________________
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 | ||||
|
Nouveau Membre du Club
![]() Inscription : juin 2008 Messages : 80 ![]() |
Une question car là, mes connaissances en SQL ne suffisent pas.
Quelle est la différence entre ces deux requêtes : Code :
Code :
|
||||
|
|
00
|
|
|
#4 | ||||
![]() ![]() |
Une requête ne commence pas par une parenthèse ! Ou alors ça veut dire que cette requête est encore incluse dans une autre ?
D'ailleurs il y a beaucoup de trucs inutiles dans tes requêtes : Ces saloperies d'apostrophes inversées ajoutées par phpMyAdmin et un bon paquet de parenthèses ; tu viens de la forêt de parenthèses d'Access ou quoi ? Voici ta première requête récrite sans le superflu et indentée correctement pour la rendre plus lisible : Code :
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
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : juin 2008 Messages : 80 ![]() |
Je sais bien qu'une requête ne commence pas par une parenthèse ...
C'était une manière simplifié de présenter les choses car lorsque je fais une UNION sur la requête sans les parenthèse cela revient au même que mettre des parenthèse autour de la requête (ce qui fais qu'elle ne fonctionne plus). Ce n'est pas ma requête donc je ne cherche pas à l'optimiser, juste à savoir pourquoi elle ne fonctionne plus alors que cela faisait des années qu'elle tournait sans problème. Enfin j'ai déjà fais la modification avec les jointures car je n'ai pas trouvé d'autre solution. C'est juste que j'aurais aimé comprendre la différence avec et sans les parenthèses autour de la requête. Enfin j'ai une vague idée, je pense que cela vient des données mais bon ça fonctionne pour l'instant donc je vais faire avec. |
|
|
00
|
|
|
#6 | ||
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
En fait il s'agit simplement de délimiteurs (pas forcément inutiles). En effet, quand une table ou un champ a un nom .. "spécial" .. avec des accents, des espaces, des apostrophes (oui oui, c'est possible (selon la documentation MySQL : "Un nom d'identifiant est constitué de caractères alpha-numériques issus du jeu de caractères courant, plus ‘_’ et ‘$’."), j'en ai fait l'expérience malgré moi), il convient de les utiliser pour que la requête se passe sans anicroche.
Exemple : Code :
|
||
|
|
00
|
|
|
#7 |
![]() ![]() |
Oui mais dans son cas comme dans 90% des cas que j'ai vu sur ce forum, malgré la proportion assez forte de gens n'ayant pas connaissance des noms mal formés, ces saloperies d'apostrophes inversées sont inutiles.
Il vaut mieux nommer ces bases de données, tables et colonnes correctement plutôt que de s'emmerder avec ces bidules disgracieux !
__________________
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
|
|
|
#8 |
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com