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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  VUE javais pas vue... [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VUE javais pas vue... [RESOLU]

n°1514541
mkracing66
Posté le 14-02-2007 à 14:07:53  profilanswer
 

Bonjour,
 
une petite question qui me turlupine et jessaye de voir ce qui est le plus pertinent.
 
 
Voici mon probleme :
 
* j ai une table avec differentes colonnes (par ex 6 colonnes)
* je voudrais recuperer la liste des doublons, doublons identifiés sur 5 colonnes (la 6eme colonne etant obligatoirement une info différente)
* je voudrais recuperer l info de la 6eme colonne pour la liste des doublons
 
 
Javais donc commencé avec une requete du style :
 

Code :
  1. SELECT count(*), col_1, col_2, col_3, col_4, col_5
  2. FROM MyTable
  3. GROUPY BY col_1, col_2, col_3, col_4, col_5
  4. HAVING Count(*) > 1


 
Cela me donne donc bien ma liste de doublons, mais pas moyen d avoir les infos de la 6eme colonne.
 
Ensuite jai pense faire un truc du style :
 

Code :
  1. SELECT col_6
  2. FROM MyTable
  3. WHERE
  4. col_1 IN (SELECT col_1 FROM MyTable GROUPY BY col_1, col_2, col_3, col_4, col_5 HAVING Count(*) > 1) AND
  5. col_2 IN (SELECT col_2 FROM MyTable GROUPY BY col_1, col_2, col_3, col_4, col_5 HAVING Count(*) > 1) AND
  6. col_3 IN (SELECT col_3 FROM MyTable GROUPY BY col_1, col_2, col_3, col_4, col_5 HAVING Count(*) > 1) AND etc...


 
Hyper fastidieux comme truc...
 
Je me demandais donc comment simplifier tout cela.
Est ce que qqun a une idée ?
 
Pour en revenir aux vues, je me suis dit : pk ne pas creer une vue de la 1ere requete, et derriere remplacer dans mes sous requetes par un simple 'SELECT col_X FROM MyView'.
Quen pensez vous ?
 
 
 
Ca parait tirer par les cheveux tout cela, mais cela doit etre tout de meme mieux que de parcourir toute la table et de refaire une selection pour trouver les doublons. Ici on se retrouverait avec une requete (+ requetes imbriquees) contre N requetes.
 
 
Bref tout commentaire et toute aide serait grandement appreciée, merci :)


Message édité par mkracing66 le 14-02-2007 à 15:45:48
mood
Publicité
Posté le 14-02-2007 à 14:07:53  profilanswer
 

n°1514543
cvex
$CveX
Posté le 14-02-2007 à 14:15:12  profilanswer
 

Est-ce que la requête fonctionne à la base ?
GROUPY ca existe ? Mettre GROUP BY c'est pas mieux ?

n°1514552
mkracing66
Posté le 14-02-2007 à 14:22:35  profilanswer
 

lol dsl erreur de frappe pour groupy....
 
Oui les requetes fonctionnent, j arrive bien aux resultats escomptés avec ces requetes.
 
Ici le pb n pas d arriver au resultat mais de determiner ce qui est le mieux a faire, le plus optimisé.
Je me doute qu'appliquer cela sur 25 lignes cela ne devrait pas trop poser de problèmes mais sur une table avec plusieurs milliers de donnees, c est surement une autre histoire surtout niveau temps d'execution...
 
la premiere idée est de faire un simple 'SELECT * FROM MyTable' , parcourir chaque enregistrement et refaire un SELECT avec les parametres qu on recupere et determiner chaque fois si on a 1 ou plusieurs enregistrements.
Cela me semble maladroit et multiplie le nombre de requete de facon démente.
 
Maintenant il y a cette solution en 1 seule requete, mais elle parait affreuse, donc peut on la simplifier ? est ce que cela change vraiment qqchose d'utiliser une vue ?
 
Merci


Message édité par mkracing66 le 14-02-2007 à 14:23:32
n°1514577
skeye
Posté le 14-02-2007 à 15:32:04  profilanswer
 

Un truc comme ça te donnerait pas ce que tu veux?
 
select * from matable t1
where exists (
   select 1 from matable t2  
   where t1.col1 = t2.col1
   and t1.col2 = t2.col2
   and t1.col3 = t2.col3
   and t1.col4 = t2.col4
   and t1.col5 = t2.col5
   and t1.col6>t2.col6
)


---------------
Can't buy what I want because it's free -
n°1514583
mkracing66
Posté le 14-02-2007 à 15:37:04  profilanswer
 

Non, ca me donne une liste bcp plus restreinte, et en aucun tous les doublons....mais je vais essayer de creuser un peu avec ca ;)

Message cité 1 fois
Message édité par mkracing66 le 14-02-2007 à 15:39:45
n°1514585
skeye
Posté le 14-02-2007 à 15:38:01  profilanswer
 

mkracing66 a écrit :

Non, ca me donne une liste bcp plus exaustive, et en aucun juste les doublons....mais je vais essayer de creuser un peu avec ca ;)


comment ça ça te donne pas que les doublons?[:pingouino]


---------------
Can't buy what I want because it's free -
n°1514588
mkracing66
Posté le 14-02-2007 à 15:41:32  profilanswer
 

j avais fait une petite erreur, mais cela est trop restrictif maintenant.
 
Quand on parle de doublon, ca veut dire tous les elements identiques car impossible de déterminer lequel est le bon, voila ca ne suffit pas, mais c interessant je vais continuer de chercher avec ca

n°1514592
skeye
Posté le 14-02-2007 à 15:42:34  profilanswer
 

mkracing66 a écrit :

j avais fait une petite erreur, mais cela est trop restrictif maintenant.
 
Quand on parle de doublon, ca veut dire tous les elements identiques car impossible de déterminer lequel est le bon, voila ca ne suffit pas, mais c interessant je vais continuer de chercher avec ca


dans ce cas and t1.col6 != t2.col6 au lieu de > :o


---------------
Can't buy what I want because it's free -
n°1514594
mkracing66
Posté le 14-02-2007 à 15:45:32  profilanswer
 

yes !  
 
Thanks a lot :)


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

  VUE javais pas vue... [RESOLU]

 

Sujets relatifs
[CSS] (Résolu) Pourriez-vous tester mon site avec IE6?[Resolu] Une class sur une "font" pas fonctionnelle sous FF :o
[C#] [Résolu] Comment communiquer avec une dll c++[Résolu]A Star ou A *
Problème IDIOT de conversion string->float [RESOLU][VBA] [résolu] Excel - bug sur macro toute simple
[Résolu][VS6] WinXP=>Win2k: "This program cannot be run in DOS Mode"[RESOLU] interdir le download de fichier
[Résolu]Variables globales qui ne se réinitialise pas...[Résolu] Trouve le bon nom d'un répertoire juste avec le début
Plus de sujets relatifs à : VUE javais pas vue... [RESOLU]


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