Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/10/2012, 14h23   #1
ifsera
Membre habitué
 
Inscription : septembre 2008
Messages : 256
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 256
Points : 115
Points : 115
Par défaut Tri en fonction d'un champ qui devient une cle

J'ai une table avec pas mal de données. De celles-ci sont extraites des données qui vont enrichir deux nouvelles tables.
Pour prendre une image, l'une contiendrait des villes et l'autre des pays. Le problème est qu'il existe des doublons dans celle d'origine. Du coup, mon insert plante.

Quelqu'un verrait comment solutionner le truc ?

Code :
1
2
3
4
5
INSERT INTO TB_LOCATION (GROUP_CODE)
SELECT CODE_GRP
  FROM VALIDATION_CODES
 WHERE VALIDATION_CODES.app= 'test'
   AND VALIDATION_CODES.CODE_GRP IS NOT NULL;
Merci.
ifsera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2012, 14h45   #2
mnitu
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 4 112
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 4 112
Points : 8 010
Points : 8 010
Select Distinct ...
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2012, 14h50   #3
ifsera
Membre habitué
 
Inscription : septembre 2008
Messages : 256
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 256
Points : 115
Points : 115
Salut, je l'avais zappe dans le post du dessus.
Le distinct passe sur les id je suppose.

Ca le fait donc pas.

En gros, je me sers d'une colonne de la pre;i6re table comme id d'une seconde. Le hic, c'est qu'elle a parfois la meme valeur, va savoir pourquoi, du coup, je veux choper qu'une occurence
pour la sauvegarder dans la nouvelle table

OK, ca le fait
j'avais une seconde clause qui fausse le truc, quand ca veut pas
je l'avais tente il y a bien une heure le distinct
ifsera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2012, 16h01   #4
ifsera
Membre habitué
 
Inscription : septembre 2008
Messages : 256
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 256
Points : 115
Points : 115
Dans la continuite, comment compter le nombre d'occurence de '.' dans un varchar, et aussi pourquoi mon second insert ne marche pas. Il s'agit de la seconde table.

Dans la premiere colonne, il me faut le varchar sans les '.' et dans la derniere faut que je sauvegarde le nombre de '.' avant suppression
Code :
1
2
3
4
5
6
7
8
INSERT INTO TB_LOCA  (LOC_CODE, REF_LOC_GRP_CODE, 
LOC_CODE_LENGTH 
)
SELECT 
trim(TRAILING '.' FROM code), 
CODE_GRP, LENGTH(REPLACE(code, '.', '')  )  
FROM VALIDATION_CODES
WHERE VALIDATION_CODES.application = 'test'
ifsera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2012, 17h21   #5
mnitu
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 4 112
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 4 112
Points : 8 010
Points : 8 010
Une solution parmi tant d'autres
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
Connected TO Oracle DATABASE 10g Enterprise Edition Release 10.2.0.4.0 
Connected AS mni
 
SQL> 
SQL> WITH DATA AS (
  2    SELECT '123.456.789' val FROM dual
  3  )
  4  SELECT val,
  5         REPLACE(val,'.') val_sans_point,
  6         length(val) - length(REPLACE(val,'.')) nb_point
  7    FROM DATA
  8  /
 
VAL         VAL_SANS_POINT   NB_POINT
----------- -------------- ----------
123.456.789 123456789               2
 
SQL>
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 12h21   #6
ifsera
Membre habitué
 
Inscription : septembre 2008
Messages : 256
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 256
Points : 115
Points : 115
ok merci, j'ai fait autrement.

longueur de la chaine - occurence du point

Je fais un insert base sur un select
Le souci est que la colonne 2, cle etrangere peut etre null, mais je ne parviens pas a le faire.
Les record avec cette colonne a null plantent
Si je les passe toutes explicitement a null, cela passe

Du coup, je voudrais savoir s'il y a moyen de faire une sorte de if ou un ...? :
la peut etre que je me fais des films
mais bon je suis pas fan de pl sql

bon j'ai utilise un when, et ca l efait pour l'histoire
ifsera est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h26.


 
 
 
 
Partenaires

Hébergement Web