erreur avec le group_by depuis la maj de Wamp

erreur avec le group_by depuis la maj de Wamp - SQL/NoSQL - Programmation

Marsh Posté le 30-04-2017 à 17:09:29    

Hello,
 
J'avais un site e-commerce que j'avais fait pour un examen de code qui regroupé SQL,PHP, JS, ... mais depuis je suis devenu front et j'ai complètement oublié le fonctionnement des requêtes.
 
J'ai relancé ce site et j'obtiens cette erreur là :  
 
Erreur sur la requête SQL.
Message : Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'hus.article.id_article' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Code : SELECT * FROM article WHERE categorie LIKE '%lampe%' GROUP BY categorie ORDER BY id_article DESC
 
ou encore  
 
Erreur sur la requête SQL.
Message : Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'hus.av.note' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Code : SELECT ar.id_article, note, categorie, titre, prix, photo, id_promo FROM article ar LEFT JOIN avis av ON ar.id_article = av.id_article GROUP BY ar.id_article ORDER BY ar.id_article DESC LIMIT 0,16
 
Avant je n'avais pas de problème, peut-on m'aider ? Je sais que le soucis vient du group by mais je ne sais plus du tout comment faire cette requête proprement.
 
merci pour votre aide :)


---------------
L'écoconception n'est pas négociable - Topic habitats de demain : https://tinyurl.com/y5h2mjx7
Reply

Marsh Posté le 30-04-2017 à 17:09:29   

Reply

Marsh Posté le 30-04-2017 à 17:29:16    

il s'agit probablement d'une requete de style

 

select a, b, sum(c)
from table
group by a

 

Dans ce cas : a est une colonne qui est dans le group by et dans le select, c est une colonne  aggregée
Mais b, n'est ni dans le group by, ni dans un aggrégat

 

Solutions :

  • si pour chaque a , il n'y a qu'un seul b, alors ajoute b a la liste du group by (
  • sinon, utilise une fonction d'aggregat sur b pour avoir celui que tu veux ( sum, max, min,...)


Mysql avant sa version 5.75 n'imposait pas ce fonctionnement, malgré le fait que ce soit celui du standard sql


Message édité par flo850 le 30-04-2017 à 17:29:55

---------------

Reply

Marsh Posté le 30-04-2017 à 21:11:35    

Si je pouvais avoir un exemple avec l'une de mes requêtes SQL, ça serait cool :D
 
Je suis le genre de personne qui comprend avec du concret, les explications pas trop.


---------------
L'écoconception n'est pas négociable - Topic habitats de demain : https://tinyurl.com/y5h2mjx7
Reply

Marsh Posté le 01-05-2017 à 00:10:00    

qu'est ce que tu veux obtenir comme éesultat avec cette requete : SELECT * FROM article WHERE categorie LIKE '%lampe%' GROUP BY categorie ORDER BY id_article DESC  ?  


---------------

Reply

Marsh Posté le 01-05-2017 à 00:45:39    

Je souhaite rechercher dans toute la table article si le titre ou la description contient le mot de recherche "lampe" par exemple


---------------
L'écoconception n'est pas négociable - Topic habitats de demain : https://tinyurl.com/y5h2mjx7
Reply

Marsh Posté le 01-05-2017 à 00:54:00    

select * from article where name like '%lampe%' or categorie like '%lampe%' order by id_article desc

 

pas besoin de group by


Message édité par flo850 le 01-05-2017 à 00:54:24

---------------

Reply

Marsh Posté le 01-05-2017 à 01:51:12    

Ah ok merci, je test ça avec les autres requêtes aussi :)


---------------
L'écoconception n'est pas négociable - Topic habitats de demain : https://tinyurl.com/y5h2mjx7
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed