Requete SQL : C tout con, mais ca me bloque :( - SQL/NoSQL - Programmation
Marsh Posté le 27-06-2003 à 11:29:20
tu peux pas. si tu fais un distinct sur un champs, les autres ne peuvent pas être différent sinon le SGDB ne sais pas comment te les renvoyer. Sauf s'il dispose d'un moyen de les stocker dans un sous-tableau, mais ca ce n'est pas standard.
Marsh Posté le 27-06-2003 à 11:30:18
je c
me suis gourré ds la conception des tables, veu pas tout refaire
Marsh Posté le 27-06-2003 à 11:35:46
j'ai pas testé du tout mais peut-être que tu peux arriver à quelque chose avec un truc comme ça:
Code :
|
Marsh Posté le 27-06-2003 à 11:36:00
bah, g trouvé l'astuce
en faite, imagine,
tu es editeur et tu as 30 magazines different. tu veux lister toutes la listes des magazines differents, mais tu peux tres bien avoir 12 magazines d'un meme titre mais avec un mois de parution different
il aurai fallu faire 2 tables...
mais la je me suis débrouillé, j'avais pas besoin de la clé primaire ID, mais juste du titre et l'url, et comme ces 2 correspondent pour 1 magazine donné, ca me retourne bien ce dont g besoin !
Marsh Posté le 27-06-2003 à 11:37:20
Anapajari a écrit : j'ai pas testé du tout mais peut-être que tu peux arriver à quelque chose avec un truc comme ça:
|
select distinct nom, url from revue
comme ca, ca marche aussi
Marsh Posté le 27-06-2003 à 12:57:58
1) Vire le ID qui est dans ta requête, et ça marchera.
PS: un distinct porte sur TOUS les champs retournés. Ce sont les tuples qui sont uniques.
2) Si tu as besoin de l'ID (pour faire je ne sais quoi), on va dire par exemple que tu veux uniquement le dernier. La requête devient :
|
Testé dans une vraie base, ça marche sans aucun problème.
Par contre, c'est très lent (22 secondes pour une table de 7700 lignes), je te conseille de bien positionner tes indexes (dans mon cas, y'avais aucun index utilisable pour la requête, ça explique en partie la lenteur )
Marsh Posté le 27-06-2003 à 13:46:47
MagicBuzz a écrit : 1) Vire le ID qui est dans ta requête, et ça marchera.
|
tjrs la qd y fo
Marsh Posté le 27-06-2003 à 11:22:41
Voila, g une table REVUE(id, nom, date_parution, url, tarif)
Je souhaite selectionner uniquement les noms des differentes revues sans les doublons.
Si je fais select distinct nom, id, url from revue, il me sort 20 résultats qui correspondent aux 20 memes revues avec des date de parution differente.
Est ce que quelq'un a une idée de comment avoir juste les titres ? tout en séléctionnant les id et l'url !