Problème avec clause DISTINCT dans requête SQL
6 messages
• Page 1 sur 1
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
Problème avec clause DISTINCT dans requête SQL
Bonjour,
Voilà j'ai plusieurs tuples identiques et cette requête est censée m'envoyer un seul exemplaire de chaque, mais non ça me les envoit tous :
Si dans la requête je ne met que SELECT DISTINCT titre FROM textes, c'est bon. Mais dans l'exemple au dessus, ça ne fonctionne pas.
Savez-vous comment faire
Voilà j'ai plusieurs tuples identiques et cette requête est censée m'envoyer un seul exemplaire de chaque, mais non ça me les envoit tous :
- Code: Tout sélectionner
SELECT
DISTINCT titre,
id,
nbrCommentaire,
TitreDernierMessage
FROM textes
WHERE
urlCategorie = '".$categorie."'
ORDER BY titre
Si dans la requête je ne met que SELECT DISTINCT titre FROM textes, c'est bon. Mais dans l'exemple au dessus, ça ne fonctionne pas.
Savez-vous comment faire
-

scores - WRInaute occasionnel

- Messages: 496
- Inscription: 24 Nov 2002
et ouais
si "id" est unique pour chaque ligne, alors c'est normal que tu vois les doublons,
vaut mieux peut être utiliser GROUP BY, si tu veux pouvoir recuperer le id tout en supprimant les doublons
SELECT titre,
id,
nbrCommentaire,
TitreDernierMessage
FROM textes
WHERE
urlCategorie = '".$categorie."'
GROUP BY titre ORDER BY titre
si "id" est unique pour chaque ligne, alors c'est normal que tu vois les doublons,
vaut mieux peut être utiliser GROUP BY, si tu veux pouvoir recuperer le id tout en supprimant les doublons
SELECT titre,
id,
nbrCommentaire,
TitreDernierMessage
FROM textes
WHERE
urlCategorie = '".$categorie."'
GROUP BY titre ORDER BY titre
- jcaron
- WRInaute accro

- Messages: 2686
- Inscription: 13 Fév 2004
scores a écrit:et ouais
si "id" est unique pour chaque ligne, alors c'est normal que tu vois les doublons,
vaut mieux peut être utiliser GROUP BY, si tu veux pouvoir recuperer le id tout en supprimant les doublons
SELECT titre,
id,
nbrCommentaire,
TitreDernierMessage
FROM textes
WHERE
urlCategorie = '".$categorie."'
GROUP BY titre ORDER BY titre
Eh non, ça ne marchera pas non plus. A partir du moment où tu fais un group by, il faut que toutes les autres colonnes soient aussi dans le group by, ou soient des aggrégats (sum, min, max, count...).
De toutes façons, c'est assez logique: on veut l'ID d'un titre mais on ne veut qu'un seul titre alors qu'il y a plusieurs IDs avec le même titre: quelle ID doit-on retourner? Il faut être plus précis dans le choix des enregistrements qu'on veut obtenir, la BDD ne peut pas deviner...
Jacques.
-

scores - WRInaute occasionnel

- Messages: 496
- Inscription: 24 Nov 2002
jcaron a écrit:Eh non, ça ne marchera pas non plus. A partir du moment où tu fais un group by, il faut que toutes les autres colonnes soient aussi dans le group by, ou soient des aggrégats (sum, min, max, count...).
Euh je vois pas trop là,
moi j convertis ya longtemps mes requetes distinct en GROUP BY en ne mettant qu'une seule colone (ou 2-3) groupée, j'ai pas de problème !
et ca le mérite de reduire le CPU contrairement au DISTINCT.
Par contre c'est vrai qu'une requete avec count () etc. je suis obligé de passé en distinct
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Multiples DISTINCT dans une requête..possible ?
- Problème de requête SQL
- [SQL] Select, Distinct, Max, Group by et autres fariboles
- Problème requête SQL
- problème requête sql (1&1)
- Problème requête SQL (ter)
- probleme avec une requête SQL
- Problème requete SQL avec ASP.
- Problème de jointure entre deux tables requête SQL
- Problème avec requête SQL multiple (3 tables) et comptage
- Google API : guide de développement de l'API Google - 20-09-2002
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Informations sur l'infrastructure technique de Google - 01-11-2004
- Google indexe le Flash - 28-04-2004
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités
