VUE javais pas vue... [RESOLU]

VUE javais pas vue... [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 14-02-2007 à 14:07:53    

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
Reply

Marsh Posté le 14-02-2007 à 14:07:53   

Reply

Marsh Posté le 14-02-2007 à 14:15:12    

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

Reply

Marsh Posté le 14-02-2007 à 14:22:35    

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
Reply

Marsh Posté le 14-02-2007 à 15:32:04    

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 -
Reply

Marsh Posté le 14-02-2007 à 15:37:04    

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
Reply

Marsh Posté le 14-02-2007 à 15:38:01    

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 -
Reply

Marsh Posté le 14-02-2007 à 15:41:32    

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

Reply

Marsh Posté le 14-02-2007 à 15:42:34    

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 -
Reply

Marsh Posté le 14-02-2007 à 15:45:32    

yes !  
 
Thanks a lot :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed