PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Hébergement serveur > ms.public.fr.sqlserver > Jointure entre 3 tables
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Jointure entre 3 tables

Réponse
 
LinkBack Outils de la discussion
Vieux 13/08/2007, 11h58   #1
Hamet
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Jointure entre 3 tables

bonjour

J'ai un problème en transact sql.
J'ai ma table contrat qui a un lien avec ma table employee et ma table
entreprise, j'ai également ma table entreprise qui a un lien avec ma table
employee
Je souhaiterai selectionner les contrats en récupérant le non de l'employee
depuis la table entreprise sauf s'il est pas renseigné ou que
l'idEmployee=550, Dans ces 2 cas je dois passer par la table contrat pour
faire ma jointure avec la table employee. Je souhaiterai faire cela sans
passer par une UNION comme dans l'exemple ci-dessous.
select

CTR.A_Contrat_Id, emp .EmployeeName
from

A_Contrat CTR
INNER

JOIN A_Company_role_contrat cr ON cr .A_Contrat_Id = CTR.A_Contrat_Id and
(cr.a_role like '%S%' )
INNER

JOIN company COM ON cr. company_id=COM.company_id
INNER

JOIN Employee EMP ON ( EMP.Employee_Id = COM.Account_manager_Media ) and
(COM .Account_manager_Media is not null)


Union

select

CTR.A_Contrat_Id, emp .EmployeeName
from

A_Contrat CTR
INNER

JOIN A_Company_role_contrat cr ON cr .A_Contrat_Id = CTR.A_Contrat_Id and
(cr.a_role like '%S%' )
INNER

JOIN company COM ON cr. company_id=COM.company_id
INNER

JOIN Employee EMP ON ( EMP.Employee_Id = ctr.employee_id ) and (COM
..Account_manager_Media is null)

Merci pour votre aide.

Hamet
  Réponse avec citation
Vieux 13/08/2007, 22h54   #2
Fred BROUARD
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Jointure entre 3 tables

Hamet a écrit :
> bonjour
>
> J'ai un problème en transact sql.


Il ne s'agit pas de transct SQL, mais de pur SQL !

SELECT CTR.A_Contrat_Id, emp.EmployeeName

FROM A_Contrat CTR
INNER JOIN A_Company_role_contrat cr
ON cr.A_Contrat_Id = CTR.A_Contrat_Id
INNER JOIN company COM
ON cr.company_id = COM.company_id
INNER JOIN Employee EMP
ON EMP.Employee_Id = COALESCE(COM.Account_manager_Media,
ctr.employee_id)

WHERE cr.a_role like '%S%'

Une petite formation SQL... ne serait-elle pas la bienvenue ?
Mon site web, comme mes bouquins peuvent vous y aider !

A +


> J'ai ma table contrat qui a un lien avec ma table employee et ma table
> entreprise, j'ai également ma table entreprise qui a un lien avec ma table
> employee
> Je souhaiterai selectionner les contrats en récupérant le non de l'employee
> depuis la table entreprise sauf s'il est pas renseigné ou que
> l'idEmployee=550, Dans ces 2 cas je dois passer par la table contrat pour
> faire ma jointure avec la table employee. Je souhaiterai faire cela sans
> passer par une UNION comme dans l'exemple ci-dessous.
> select
>
> CTR.A_Contrat_Id, emp .EmployeeName
> from
>
> A_Contrat CTR
> INNER
>
> JOIN A_Company_role_contrat cr ON cr .A_Contrat_Id = CTR.A_Contrat_Id and
> (cr.a_role like '%S%' )
> INNER
>
> JOIN company COM ON cr. company_id=COM.company_id
> INNER
>
> JOIN Employee EMP ON ( EMP.Employee_Id = COM.Account_manager_Media ) and
> (COM .Account_manager_Media is not null)
>
>
> Union
>
> select
>
> CTR.A_Contrat_Id, emp .EmployeeName
> from
>
> A_Contrat CTR
> INNER
>
> JOIN A_Company_role_contrat cr ON cr .A_Contrat_Id = CTR.A_Contrat_Id and
> (cr.a_role like '%S%' )
> INNER
>
> JOIN company COM ON cr. company_id=COM.company_id
> INNER
>
> JOIN Employee EMP ON ( EMP.Employee_Id = ctr.employee_id ) and (COM
> .Account_manager_Media is null)
>
> Merci pour votre aide.
>
> Hamet



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
  Réponse avec citation
Vieux 17/08/2007, 16h24   #3
Hamet
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Jointure entre 3 tables

Merci beaucoup, pouvez-vous me donner le lien vers votre site

"Fred BROUARD" a écrit :

> Hamet a écrit :
> > bonjour
> >
> > J'ai un problème en transact sql.

>
> Il ne s'agit pas de transct SQL, mais de pur SQL !
>
> SELECT CTR.A_Contrat_Id, emp.EmployeeName
>
> FROM A_Contrat CTR
> INNER JOIN A_Company_role_contrat cr
> ON cr.A_Contrat_Id = CTR.A_Contrat_Id
> INNER JOIN company COM
> ON cr.company_id = COM.company_id
> INNER JOIN Employee EMP
> ON EMP.Employee_Id = COALESCE(COM.Account_manager_Media,
> ctr.employee_id)
>
> WHERE cr.a_role like '%S%'
>
> Une petite formation SQL... ne serait-elle pas la bienvenue ?
> Mon site web, comme mes bouquins peuvent vous y aider !
>
> A +
>
>
> > J'ai ma table contrat qui a un lien avec ma table employee et ma table
> > entreprise, j'ai également ma table entreprise qui a un lien avec ma table
> > employee
> > Je souhaiterai selectionner les contrats en récupérant le non de l'employee
> > depuis la table entreprise sauf s'il est pas renseigné ou que
> > l'idEmployee=550, Dans ces 2 cas je dois passer par la table contrat pour
> > faire ma jointure avec la table employee. Je souhaiterai faire cela sans
> > passer par une UNION comme dans l'exemple ci-dessous.
> > select
> >
> > CTR.A_Contrat_Id, emp .EmployeeName
> > from
> >
> > A_Contrat CTR
> > INNER
> >
> > JOIN A_Company_role_contrat cr ON cr .A_Contrat_Id = CTR.A_Contrat_Id and
> > (cr.a_role like '%S%' )
> > INNER
> >
> > JOIN company COM ON cr. company_id=COM.company_id
> > INNER
> >
> > JOIN Employee EMP ON ( EMP.Employee_Id = COM.Account_manager_Media ) and
> > (COM .Account_manager_Media is not null)
> >
> >
> > Union
> >
> > select
> >
> > CTR.A_Contrat_Id, emp .EmployeeName
> > from
> >
> > A_Contrat CTR
> > INNER
> >
> > JOIN A_Company_role_contrat cr ON cr .A_Contrat_Id = CTR.A_Contrat_Id and
> > (cr.a_role like '%S%' )
> > INNER
> >
> > JOIN company COM ON cr. company_id=COM.company_id
> > INNER
> >
> > JOIN Employee EMP ON ( EMP.Employee_Id = ctr.employee_id ) and (COM
> > .Account_manager_Media is null)
> >
> > Merci pour votre aide.
> >
> > Hamet

>
>
> --
> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
> Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
> Audit, conseil, expertise, formation, modélisation, tuning, optimisation
> ********************* http://www.datasapiens.com ***********************
>

  Réponse avec citation
Vieux 18/08/2007, 17h45   #4
Fred BROUARD
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Jointure entre 3 tables



Hamet a écrit :
> Merci beaucoup, pouvez-vous me donner le lien vers votre site


C'est dans ma signature.

A +

>
> "Fred BROUARD" a écrit :
>
>> Hamet a écrit :
>>> bonjour
>>>
>>> J'ai un problème en transact sql.

>> Il ne s'agit pas de transct SQL, mais de pur SQL !
>>
>> SELECT CTR.A_Contrat_Id, emp.EmployeeName
>>
>> FROM A_Contrat CTR
>> INNER JOIN A_Company_role_contrat cr
>> ON cr.A_Contrat_Id = CTR.A_Contrat_Id
>> INNER JOIN company COM
>> ON cr.company_id = COM.company_id
>> INNER JOIN Employee EMP
>> ON EMP.Employee_Id = COALESCE(COM.Account_manager_Media,
>> ctr.employee_id)
>>
>> WHERE cr.a_role like '%S%'
>>
>> Une petite formation SQL... ne serait-elle pas la bienvenue ?
>> Mon site web, comme mes bouquins peuvent vous y aider !
>>
>> A +
>>
>>
>>> J'ai ma table contrat qui a un lien avec ma table employee et ma table
>>> entreprise, j'ai également ma table entreprise qui a un lien avec ma table
>>> employee
>>> Je souhaiterai selectionner les contrats en récupérant le non de l'employee
>>> depuis la table entreprise sauf s'il est pas renseigné ou que
>>> l'idEmployee=550, Dans ces 2 cas je dois passer par la table contrat pour
>>> faire ma jointure avec la table employee. Je souhaiterai faire cela sans
>>> passer par une UNION comme dans l'exemple ci-dessous.
>>> select
>>>
>>> CTR.A_Contrat_Id, emp .EmployeeName
>>> from
>>>
>>> A_Contrat CTR
>>> INNER
>>>
>>> JOIN A_Company_role_contrat cr ON cr .A_Contrat_Id = CTR.A_Contrat_Id and
>>> (cr.a_role like '%S%' )
>>> INNER
>>>
>>> JOIN company COM ON cr. company_id=COM.company_id
>>> INNER
>>>
>>> JOIN Employee EMP ON ( EMP.Employee_Id = COM.Account_manager_Media ) and
>>> (COM .Account_manager_Media is not null)
>>>
>>>
>>> Union
>>>
>>> select
>>>
>>> CTR.A_Contrat_Id, emp .EmployeeName
>>> from
>>>
>>> A_Contrat CTR
>>> INNER
>>>
>>> JOIN A_Company_role_contrat cr ON cr .A_Contrat_Id = CTR.A_Contrat_Id and
>>> (cr.a_role like '%S%' )
>>> INNER
>>>
>>> JOIN company COM ON cr. company_id=COM.company_id
>>> INNER
>>>
>>> JOIN Employee EMP ON ( EMP.Employee_Id = ctr.employee_id ) and (COM
>>> .Account_manager_Media is null)
>>>
>>> Merci pour votre aide.
>>>
>>> Hamet

>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
>> Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
>> Audit, conseil, expertise, formation, modélisation, tuning, optimisation
>> ********************* http://www.datasapiens.com ***********************
>>



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 23h33.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,13026 seconds with 12 queries