|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 37 ![]() |
Bonjour à tous,
je viens d'acheter un script de chat avec webcam, que j'essaye de faire fonctionner sur un serveur dédié OVh sous Release 2. Le site fonctionne sauf une page qui est supposait afficher les membres en ligne. Voici l'erreur: A Database Error Occurred Error Number: 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause Code :
SELECT `performers`.`nickname`, `performers_videos`.*, count(DISTINCT(performers_videos.video_id)) AS total FROM `performers_videos` INNER JOIN `performers` ON `performers`.`id`=`performers_videos`.`performer_id` WHERE (SELECT COUNT(performer_id) FROM `banned_countries` WHERE `banned_countries`.`performer_id` = `performers_videos`.`performer_id` AND `banned_countries`.`country_code` = 'FR') = 0 merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() |
Quelle horreur cette requête ! Celui qui a pondu ce script devrait apprendre le SQL !
![]() Elle est censée faire quoi cette requête ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. 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 la suite Linux Mageïa ! |
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 37 ![]() |
C'est une page qui doit afficher les membres en lignes ...
|
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Frédéric Inscription : juin 2011 Messages : 442 ![]() |
Pour avoir les options actuelles :
Puis tu fais (Sans le ONLY_FULL_GROUP_BY): |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 37 ![]() |
merci pour vos réponse
j'ai décidé de réinstaller un debian tout neuf avec les paquets nécessaires. Je mettrai mysql 5.5 Merci encore |
|
|
00
|
|
|
#6 | ||
![]() ![]() |
Je ne vois pas de condition dans la requête qui détermine si un membre est en ligne ou pas ! Ce n'est probablement pas la seule requête du script qui génère la page.
À moins que ce soit le fait qu'il figure dans la table "performers_videos" ? D'ailleurs, on nomme de préférence les tables au singulier mais c'est un autre débat. Apparemment, cette requête compte le nombre de vidéos de chaque performer et donne la liste de ces vidéos. Par contre, je ne comprends pas l'utilité du WHERE. D'après le nom de la table, il semble s'agir d'exclure du résultat les membres bannis ? Pourquoi limiter à la France ? Et il faudrait plutôt une condition NOT EXISTS que ce comptage en sous-requête corrélée qui va très vite plomber les ressources et augmenter le temps de réponse. La partie qui pose problème et qui cause ce message d'erreur, c'est `performers_videos`.* dans le SELECT. Au passage, il vaut mieux éviter la guerre des étoiles ! Donc si j'ai bien compris le sens de la requête, ça devrait plutôt être ceci : Code :
Pour répondre à votre question initiale, c'est une bonne chose que ce paramètre soit actif car ça permet de détecter les requêtes foireuses de ce genre et qui peuvent donner des résultats faux si ce filtre n'est pas activé. J'espère que vous n'avez pas payé trop cher votre script et que le reste n'est pas aussi pourri que cette requête !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. 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 la suite Linux Mageïa ! |
||
|
00
|
Copyright © 2000-2013 - www.developpez.com