OVH Cloud OVH Cloud

requete d'Insertion

7 réponses
Avatar
Nicolas
Bonjour tout le monde,

J'ai une table TempEmploye qui contient une extraction d'un fichier Excel.
Et une autre table T_Employe ou je veux inserer les employé contenu dans ma
table TempEmploye.
La clé primaire de ma table T_employe est le numero de sécurité sociale de
l'employé "ss_employe".
Le problème est que dans ma table tempEmploye je peux avoir plusieurs fois
le même numero de sécurité sociale.Donc, lorsque je fais :
" insert T_employe(..,..,..) select ...,...,... from tempEmploye "
j'obtiens un message d'erreur me disant que ma clé est dupliqué.
Comment faire pour ne prendre que la première ligne ou apparait un numéro de
sécurité sociale en double ??

Merci

david

7 réponses

Avatar
JMD
Ben, SELECT DISTINCT non ? Ou alors j'ai pas compris, et dans ce cas, mes
excuses.

Cordialement.


"Nicolas" a écrit dans le message de news:

Bonjour tout le monde,

J'ai une table TempEmploye qui contient une extraction d'un fichier Excel.
Et une autre table T_Employe ou je veux inserer les employé contenu dans


ma
table TempEmploye.
La clé primaire de ma table T_employe est le numero de sécurité sociale de
l'employé "ss_employe".
Le problème est que dans ma table tempEmploye je peux avoir plusieurs fois
le même numero de sécurité sociale.Donc, lorsque je fais :
" insert T_employe(..,..,..) select ...,...,... from tempEmploye "
j'obtiens un message d'erreur me disant que ma clé est dupliqué.
Comment faire pour ne prendre que la première ligne ou apparait un numéro


de
sécurité sociale en double ??

Merci

david




Avatar
Nicolas
hé non justement ou alors j'utilise mal distinct !
Si tu veux dans ma table tempEmploye je peux avoir les 2 enregistrement
suivants:
177105201245222 Dupont Pierre 16 rue des tulipes
177105201245222 Dupont Pierre
Donc si je fais :
"Select Distinct ss_employe,nom_employe,prenom_employe,adresse_employe From
tempEmploye "
j'obtiendrais ces 2 mêmes lignes puisque l'adresse n'est pas pareil
Moi ce que je vourdrais c'est faire le distinct uniquement sur mon champ
ss_employe et récupéré toutes les autres informations qd même , le nom, le
prénom, l'adresse, ...







"JMD" a écrit dans le message de
news:
Ben, SELECT DISTINCT non ? Ou alors j'ai pas compris, et dans ce cas, mes
excuses.

Cordialement.


"Nicolas" a écrit dans le message de news:

> Bonjour tout le monde,
>
> J'ai une table TempEmploye qui contient une extraction d'un fichier


Excel.
> Et une autre table T_Employe ou je veux inserer les employé contenu dans
ma
> table TempEmploye.
> La clé primaire de ma table T_employe est le numero de sécurité sociale


de
> l'employé "ss_employe".
> Le problème est que dans ma table tempEmploye je peux avoir plusieurs


fois
> le même numero de sécurité sociale.Donc, lorsque je fais :



> " insert T_employe(..,..,..) select ...,...,... from tempEmploye "
> j'obtiens un message d'erreur me disant que ma clé est dupliqué.
> Comment faire pour ne prendre que la première ligne ou apparait un


numéro
de
> sécurité sociale en double ??
>
> Merci
>
> david
>
>




Avatar
JMD
Yes.

Essai un truc comme ça :

SELECT DISTINCT Table_contacts.entreprise
FROM Table_contacts
WHERE (((not Exists (SELECT Table_contacts.entreprise,
Table_contacts.contact
FROM Table_contacts
WHERE (((Table_contacts.entreprise) In (SELECT [entreprise] FROM
[Table_contacts] As Tmp GROUP BY [entreprise] HAVING Count(*)>1 )))
ORDER BY Table_contacts.entreprise))úlse))

Cordialement.




"Nicolas" a écrit dans le message de news:
OnhLQ#
hé non justement ou alors j'utilise mal distinct !
Si tu veux dans ma table tempEmploye je peux avoir les 2 enregistrement
suivants:
177105201245222 Dupont Pierre 16 rue des tulipes
177105201245222 Dupont Pierre
Donc si je fais :
"Select Distinct ss_employe,nom_employe,prenom_employe,adresse_employe


From
tempEmploye "
j'obtiendrais ces 2 mêmes lignes puisque l'adresse n'est pas pareil
Moi ce que je vourdrais c'est faire le distinct uniquement sur mon champ
ss_employe et récupéré toutes les autres informations qd même , le nom, le
prénom, l'adresse, ...







"JMD" a écrit dans le message de
news:
> Ben, SELECT DISTINCT non ? Ou alors j'ai pas compris, et dans ce cas,


mes
> excuses.
>
> Cordialement.
>
>
> "Nicolas" a écrit dans le message de news:
>
> > Bonjour tout le monde,
> >
> > J'ai une table TempEmploye qui contient une extraction d'un fichier
Excel.
> > Et une autre table T_Employe ou je veux inserer les employé contenu


dans
> ma
> > table TempEmploye.
> > La clé primaire de ma table T_employe est le numero de sécurité


sociale
de
> > l'employé "ss_employe".
> > Le problème est que dans ma table tempEmploye je peux avoir plusieurs
fois
> > le même numero de sécurité sociale.Donc, lorsque je fais :

> > " insert T_employe(..,..,..) select ...,...,... from tempEmploye "
> > j'obtiens un message d'erreur me disant que ma clé est dupliqué.
> > Comment faire pour ne prendre que la première ligne ou apparait un
numéro
> de
> > sécurité sociale en double ??
> >
> > Merci
> >
> > david
> >
> >
>
>




Avatar
Fred BROUARD - SQLpro
Select top 1 Distinct ss_employe, nom_employe, prenom_employe,
adresse_employe
From tempEmploye

A +

Nicolas a écrit :
Bonjour tout le monde,

J'ai une table TempEmploye qui contient une extraction d'un fichier Excel.
Et une autre table T_Employe ou je veux inserer les employé contenu dans ma
table TempEmploye.
La clé primaire de ma table T_employe est le numero de sécurité sociale de
l'employé "ss_employe".
Le problème est que dans ma table tempEmploye je peux avoir plusieurs fois
le même numero de sécurité sociale.Donc, lorsque je fais :
" insert T_employe(..,..,..) select ...,...,... from tempEmploye "
j'obtiens un message d'erreur me disant que ma clé est dupliqué.
Comment faire pour ne prendre que la première ligne ou apparait un numéro de
sécurité sociale en double ??

Merci

david





--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Avatar
Nicolas
> Select top 1 Distinct ss_employe, nom_employe, prenom_employe,
adresse_employe
From tempEmploye



Si je mets ca sur sql server il me dit qu'il y a une erreur de syntaxe!
Par contre si je mets :
Select distinct top 1 [ss_employe], [nom_employe] , [adresse_employe]
From dbo.tempEmploye
alors il me renvoie uniquement la première ligne. Alors que moi je veux qui
me renvoie toutes les lignes de ma table ou le numero de securite socile est
unique et la première ligne des lignes contenant le numero de ss en double.



"Fred BROUARD - SQLpro" a écrit dans le message
de news:3fc8810f$0$6967$
Select top 1 Distinct ss_employe, nom_employe, prenom_employe,
adresse_employe
From tempEmploye

A +

Nicolas a écrit :
> Bonjour tout le monde,
>
> J'ai une table TempEmploye qui contient une extraction d'un fichier


Excel.
> Et une autre table T_Employe ou je veux inserer les employé contenu dans


ma
> table TempEmploye.
> La clé primaire de ma table T_employe est le numero de sécurité sociale


de
> l'employé "ss_employe".
> Le problème est que dans ma table tempEmploye je peux avoir plusieurs


fois
> le même numero de sécurité sociale.Donc, lorsque je fais :
> " insert T_employe(..,..,..) select ...,...,... from tempEmploye "
> j'obtiens un message d'erreur me disant que ma clé est dupliqué.
> Comment faire pour ne prendre que la première ligne ou apparait un


numéro de
> sécurité sociale en double ??
>
> Merci
>
> david
>
>

--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************



Avatar
Steve Kass
Nicolas,

S'il n'y a pas de champ unique dans tempEmploye, essayez

alter table tempEmploye add keycol int identity(1,1)
go
select ss_employe, nom_employe, prenom_employe, adresse_employe
from tempEmploye E1
where not exists (
select * from tempEmploye E2
where E2.ss_employe = E1.ss_employe
and E2.keycol < E1.keycol
)

-- ou

alter table tempEmploye add keycol int identity(1,1)
go
select ss_employe, nom_employe, prenom_employe, adresse_employe
from tempEmploye E1
where keycol = (
select min(keycol) from tempEmploye E2
where E2.ss_employe = E1.ss_employe
)

SK


Nicolas wrote:

hé non justement ou alors j'utilise mal distinct !
Si tu veux dans ma table tempEmploye je peux avoir les 2 enregistrement
suivants:
177105201245222 Dupont Pierre 16 rue des tulipes
177105201245222 Dupont Pierre
Donc si je fais :
"Select Distinct ss_employe,nom_employe,prenom_employe,adresse_employe From
tempEmploye "
j'obtiendrais ces 2 mêmes lignes puisque l'adresse n'est pas pareil
Moi ce que je vourdrais c'est faire le distinct uniquement sur mon champ
ss_employe et récupéré toutes les autres informations qd même , le nom, le
prénom, l'adresse, ...







"JMD" a écrit dans le message de
news:


Ben, SELECT DISTINCT non ? Ou alors j'ai pas compris, et dans ce cas, mes
excuses.

Cordialement.


"Nicolas" a écrit dans le message de news:



Bonjour tout le monde,

J'ai une table TempEmploye qui contient une extraction d'un fichier






Excel.


Et une autre table T_Employe ou je veux inserer les employé contenu dans




ma


table TempEmploye.
La clé primaire de ma table T_employe est le numero de sécurité sociale






de


l'employé "ss_employe".
Le problème est que dans ma table tempEmploye je peux avoir plusieurs






fois


le même numero de sécurité sociale.Donc, lorsque je fais :









" insert T_employe(..,..,..) select ...,...,... from tempEmploye "
j'obtiens un message d'erreur me disant que ma clé est dupliqué.
Comment faire pour ne prendre que la première ligne ou apparait un






numéro


de


sécurité sociale en double ??

Merci

david
















Avatar
Nicolas
Merci Steve Kass ca marche nickel !!!!!
C'est exactement ce que je voulais !!

"Steve Kass" a écrit dans le message de
news:%
Nicolas,

S'il n'y a pas de champ unique dans tempEmploye, essayez

alter table tempEmploye add keycol int identity(1,1)
go
select ss_employe, nom_employe, prenom_employe, adresse_employe
from tempEmploye E1
where not exists (
select * from tempEmploye E2
where E2.ss_employe = E1.ss_employe
and E2.keycol < E1.keycol
)

-- ou

alter table tempEmploye add keycol int identity(1,1)
go
select ss_employe, nom_employe, prenom_employe, adresse_employe
from tempEmploye E1
where keycol = (
select min(keycol) from tempEmploye E2
where E2.ss_employe = E1.ss_employe
)

SK


Nicolas wrote:

>hé non justement ou alors j'utilise mal distinct !
>Si tu veux dans ma table tempEmploye je peux avoir les 2 enregistrement
>suivants:
>177105201245222 Dupont Pierre 16 rue des tulipes
>177105201245222 Dupont Pierre
>Donc si je fais :
>"Select Distinct ss_employe,nom_employe,prenom_employe,adresse_employe


From
>tempEmploye "
>j'obtiendrais ces 2 mêmes lignes puisque l'adresse n'est pas pareil
>Moi ce que je vourdrais c'est faire le distinct uniquement sur mon champ
>ss_employe et récupéré toutes les autres informations qd même , le nom,


le
>prénom, l'adresse, ...
>
>
>
>
>
>
>
>"JMD" a écrit dans le message de
>news:
>
>
>>Ben, SELECT DISTINCT non ? Ou alors j'ai pas compris, et dans ce cas,


mes
>>excuses.
>>
>>Cordialement.
>>
>>
>>"Nicolas" a écrit dans le message de news:
>>
>>
>>
>>>Bonjour tout le monde,
>>>
>>>J'ai une table TempEmploye qui contient une extraction d'un fichier
>>>
>>>
>Excel.
>
>
>>>Et une autre table T_Employe ou je veux inserer les employé contenu


dans
>>>
>>>
>>ma
>>
>>
>>>table TempEmploye.
>>>La clé primaire de ma table T_employe est le numero de sécurité sociale
>>>
>>>
>de
>
>
>>>l'employé "ss_employe".
>>>Le problème est que dans ma table tempEmploye je peux avoir plusieurs
>>>
>>>
>fois
>
>
>>>le même numero de sécurité sociale.Donc, lorsque je fais :
>>>
>>>
>
>
>
>>>" insert T_employe(..,..,..) select ...,...,... from tempEmploye "
>>>j'obtiens un message d'erreur me disant que ma clé est dupliqué.
>>>Comment faire pour ne prendre que la première ligne ou apparait un
>>>
>>>
>numéro
>
>
>>de
>>
>>
>>>sécurité sociale en double ??
>>>
>>>Merci
>>>
>>>david
>>>
>>>
>>>
>>>
>>
>>
>
>
>
>