Bonjour à tous,
Je viens de MySQL donc apparement j'ai pris quelques mauvaises habitudes en SQL.
La requête est bidon mais elle illustre bien.
ma_table_ville ressemble a peu près à ca :
Elle représente chaque ville où la personne est passéeCode:
1
2
3
4
5
6
7
8
9
10 id |ville |p_id 1 |Paris |1 2 |Lyon |1 3 |Londres |2 4 |Paris |2 5 |Marseille |3 6 |Lyon |3 7 |NY |3 8 |Paris |3 ...
Voici ma requête :
Bon on ne parle pas de la jointure ou de la structure qui ne sont pas très jolies, mais juste du Group by, ceci est juste un exemple pour illustrer.Code:
1
2
3
4
5
6
7
8 SELECT P.id, P.nom, P.prenom, P.adresse, P.tel, ... FROM ma_table P, ma_table_ville V WHERE P.id = V.p_id AND ( V.ville = 'Paris' OR V.ville = 'Lyon' )
Avec une telle requête, les personne ayant visitée à la fois Paris et Lyon apparaissent en double.
Avant sous MySQL il me suffisait de faire
Mais sous PostgreSQL, si je ne veut pas avoir de message d'erreur, j'ai trouvé qu'il fallait mettre tous les champs SELECT dans GROUP BY :Code:GROUP BY P.id
Sachant qu'il n'y aura aucun enregistrement avec le même P.id qui soit différent, n'y a-t-il pas un moyen de dire qu'il doit regrouper selon tout les champs de SELECT ?Code:GROUP BY P.id, P.nom, P.prenom, P.adresse, P.tel, ...
Sachant que je ne peut pas bien modifier le champ SELECT, et que, de préférence, ma requête doit être compatible MySQL et PostgreSQL
Merci beaucoup