Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1865 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete SQL : C tout con, mais ca me bloque :(

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete SQL : C tout con, mais ca me bloque :(

n°441487
fabd
Posté le 27-06-2003 à 11:22:41  profilanswer
 

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 !

mood
Publicité
Posté le 27-06-2003 à 11:22:41  profilanswer
 

n°441509
gizmo
Posté le 27-06-2003 à 11:29:20  profilanswer
 

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.

n°441513
fabd
Posté le 27-06-2003 à 11:30:18  profilanswer
 

je c :'(
 
me suis gourré ds la conception des tables, veu pas tout refaire :'(

n°441515
gizmo
Posté le 27-06-2003 à 11:30:58  profilanswer
 

c'est quoi que tu veux faire exactement comme requète?

n°441540
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-06-2003 à 11:35:46  profilanswer
 

j'ai pas testé du tout mais peut-être que tu peux arriver à quelque chose avec un truc comme ça:

Code :
  1. select T1.uniqueName, T2.id, T2.url from ( select disctinct nom as uniqueName from revue) as T1 inner join revue as T2 on ( T1.uniqueName = T2.nom)

n°441543
fabd
Posté le 27-06-2003 à 11:36:00  profilanswer
 

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 !

n°441552
fabd
Posté le 27-06-2003 à 11:37:20  profilanswer
 

Anapajari a écrit :

j'ai pas testé du tout mais peut-être que tu peux arriver à quelque chose avec un truc comme ça:

Code :
  1. select T1.uniqueName, T2.id, T2.url from ( select disctinct nom as uniqueName from revue) as T1 inner join revue as T2 on ( T1.uniqueName = T2.nom)




 
select distinct nom, url from revue  :D  
 
comme ca, ca marche aussi :p

n°441680
MagicBuzz
Posté le 27-06-2003 à 12:57:58  profilanswer
 

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 :
 
 


select r1.titre, max(r2.id)
from revue r1, revue r2
where r2.titre = r1.titre
group by r1.titre


 
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 ;))

n°441740
fabd
Posté le 27-06-2003 à 13:46:47  profilanswer
 

MagicBuzz a écrit :

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 :
 
 


select r1.titre, max(r2.id)
from revue r1, revue r2
where r2.titre = r1.titre
group by r1.titre


 
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 ;))


 
tjrs la qd y fo  :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete SQL : C tout con, mais ca me bloque :(

 

Sujets relatifs
[SQL] requtete pas facilePb dans menu déroulant avec SQL !!!
[SQL et C#] Récupération d'un numéro de session[SQL et C#] Récupération d'un numéro de session
[SQL et C#] Récupération d'un numéro de session[SQL] Oracle, choisir plusieurs dates différentes
[SQL] concatener les resultatsMy SQL error
[SQL] Query SoustractionRequete sous SQL SERVER avec Auto-Increment
Plus de sujets relatifs à : Requete SQL : C tout con, mais ca me bloque :(


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR