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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Sélection de valeurs distinctes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sélection de valeurs distinctes

n°1805851
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-10-2008 à 12:54:56  profilanswer
 

Hello all

 

J'ai 2 tables :

 

Table 1 :

 

id     value
8      kikoo
12    lol
31    asv
41    kikoo

 


Table 2 :

 

id     value
1      kikoo
2      lol
3      asv
4      kikoo

 


La table 2 est en fait identique à la table 1, sauf que les id ont été renumérotés suite à une migration. Du coup, ces id étant aussi liés à des clés étrangères d'autres tables, toutes mes relations sont foutues, normal.

 

J'ai donc voulu créer une table de correspondance entre les anciens id et les nouveaux, afin d'alimenter mes tables dépendantes correctement, via la requête suivante :

 
Code :
  1. CREATE TABLE #temp(old INT, new INT)
  2. INSERT INTO #temp SELECT o.id, n.id FROM table1 o INNER JOIN table2 n ON o.value = n.value
  3. SELECT * FROM #temp
 

J'obtiens ceci

 

old    new
8       1
12     2
31     3
41     1

 

le probleme saute donc aux yeux : sur la 4eme ligne, pour l'ancien id 41, j'ai 1 comme nouvel id au lieu de 4 et je suis donc dans le caca [:dawa]

 

un cador pour m'aider à dépatouiller ça ? :D

 

Merci les gros :hello:

 

edit: j'utilise SQL Server 2005


Message édité par Harkonnen le 29-10-2008 à 12:57:06

---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 29-10-2008 à 12:54:56  profilanswer
 

n°1805853
cosmoschtr​oumpf
dawa powered
Posté le 29-10-2008 à 13:00:40  profilanswer
 

Pourquoi t'as pas conservé les id lors de la migration ? Y'avait des données déjà présentes ?


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1805854
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-10-2008 à 13:02:09  profilanswer
 

cosmoschtroumpf a écrit :

Pourquoi t'as pas conservé les id lors de la migration ? Y'avait des données déjà présentes ?


ben oui :spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
n°1805855
cosmoschtr​oumpf
dawa powered
Posté le 29-10-2008 à 13:03:00  profilanswer
 

ok ; sinon je t'aurais dit d'utiliser IDENTITY_INSERT mais là je vois pas trop :o


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1805856
Moktar1er
No one replies...
Posté le 29-10-2008 à 13:06:43  profilanswer
 

T'as essayé de jouer avec 'INTERSECT'?

n°1805857
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-10-2008 à 13:06:46  profilanswer
 

ben si la base d'origine avait été vide, j'aurais même pas créé de topic hein [:god]
faut m'aider hein, sinon je dors au bureau :cry:


---------------
J'ai un string dans l'array (Paris Hilton)
n°1805858
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-10-2008 à 13:07:30  profilanswer
 

Moktar1er a écrit :

T'as essayé de jouer avec 'INTERSECT'?


ah tiens, spas con ça, j'y avais pas pensé
je regarde ça de suite
merci chef [:dawa]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1805895
el muchach​o
Comfortably Numb
Posté le 29-10-2008 à 14:46:39  profilanswer
 

Avec Oracle, tu aurais pu jouer avec rownum ou row_number(). Avec SQL Server, tu as p-ê l'équivalent, non ?


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1805904
MagicBuzz
Posté le 29-10-2008 à 14:54:05  profilanswer
 

Je suis pas trop sûr de moi, mais à la base, ça reproduirait pas ce qu'il s'est passé ça ?
 
Parceque du coup t'as même pas besoin de lire tab2 ^^
 

Code :
  1. SELECT ROW_NUMBER() over(ORDER BY id), id, value
  2. FROM tab1;


 


                     id          value
-------------------- ----------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1                    8           kikoo
2                    12          lol
3                    31          asv
4                    41          kikoo
 
(4 row(s) affected)

Message cité 1 fois
Message édité par MagicBuzz le 29-10-2008 à 14:54:30
n°1805905
MagicBuzz
Posté le 29-10-2008 à 14:54:59  profilanswer
 

el muchacho a écrit :

Avec Oracle, tu aurais pu jouer avec rownum ou row_number(). Avec SQL Server, tu as p-ê l'équivalent, non ?


vi justement ^^

mood
Publicité
Posté le 29-10-2008 à 14:54:59  profilanswer
 

n°1805981
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-10-2008 à 16:03:03  profilanswer
 

MagicBuzz a écrit :

Je suis pas trop sûr de moi, mais à la base, ça reproduirait pas ce qu'il s'est passé ça ?
 
Parceque du coup t'as même pas besoin de lire tab2 ^^
 

Code :
  1. SELECT ROW_NUMBER() over(ORDER BY id), id, value
  2. FROM tab1;


 


                     id          value
-------------------- ----------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1                    8           kikoo
2                    12          lol
3                    31          asv
4                    41          kikoo
 
(4 row(s) affected)



rooo ptain, tu sais que je t'aime toi ? [:atsuko]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1806012
el muchach​o
Comfortably Numb
Posté le 29-10-2008 à 16:41:31  profilanswer
 

C'est le B.A.BA des fonctions analytiques. :o
Quand je disais que c'était vachement utile :o

Message cité 1 fois
Message édité par el muchacho le 29-10-2008 à 16:42:11

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1806022
MagicBuzz
Posté le 29-10-2008 à 16:56:22  profilanswer
 

el muchacho a écrit :

C'est le B.A.BA des fonctions analytiques. :o
Quand je disais que c'était vachement utile :o


pis ça fait découvrir à quel point c'est utile le copier/coller, parceque la syntaxe... :sweat:

n°1806119
el muchach​o
Comfortably Numb
Posté le 29-10-2008 à 20:46:34  profilanswer
 

Pour ton exemple, ça va, c'est facile, mais il y a d'autres cas qui sont de grosses prises de tête, ouais. De toute façon, la syntaxe de SQL est à mon avis son gros point faible. Ils ont voulu faire un pseudo langage naturel pour le rendre accessible aux non programmeurs, le résultat est qu'elle est extrêmement rigide et difficile à utiliser, à mon goût. La syntaxe impossible à mémoriser des fonctions analytiques est la conséquence directe de la syntaxe du SQL, langage qui d'évidence n'a jamais été prévu pour être extensible.
Les langages fonctionnels traditionnels, au contraire, sont flexibles et leur syntaxe est régulière et mémorisable.


Message édité par el muchacho le 29-10-2008 à 20:46:55

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien

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

  Sélection de valeurs distinctes

 

Sujets relatifs
Récupérer les valeurs RGB retournées par la méthode getRGB()[Résolu] Manipulation de dates par FILETIME et SYSTEMTIME
Quel séparateur est le meilleur pour séparer des valeurs ?[Résolu]Pb récupération plusieurs valeurs d'un formulaire dans un mail
sélection d'un JRadioButton par programmationSTL dumper les valeurs d'un vecteur dans un fichier binaire
EXCEL - références dans une sélection de plusieurs plagesUpdate de plusieurs valeurs d'une table
___VBA Excel - selection de valeurs distinctes
Plus de sujets relatifs à : Sélection de valeurs distinctes


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