Bonjour,

Actuellement en stage dans une grosse boîte, je découvre le sql "avancé". J'avais des bases aquis seul. Mais je veux faire un truc très propre la.

J'ai eu un soucis, j'ai découvert que mon soucis était régler grace à FULL OUTER JOIN. J'ai lu beaucoup de topic à ce sujet sur le forum, ainsi que le tuto http://sqlpro.developpez.com/cours/s...ures/#LIII-D-2.

J'ai reussi (avant de lire ces topics) à m'en sortir avec la syntaxe *=

Si j'ai bien compris c'est plutôt vieu comme méthode, et plus trop d'actualité ? Le topic http://www.developpez.net/forums/d52...-dit-jointure/ m'interpelle donc. J'ai compris avec http://www.developpez.net/forums/m1345752-37/ que je devais utiliser JOIN

Sauf que je n'arrive pas à appliquer cette syntaxe, je dois avouer ne pas avoir le temps de le faire correctement maintenant. J'ai pas non plus envi de laisser mon *=, j'aimerais quelque chose de propre.

Pourriez vous-m'aidez ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT
 	A.Call_ID 'N° Ticket', /* ID Ticket */
	A.Call_HistoFlag 'Etat', /* Etat ouvert/fermé */
	B.Lang_Text 'Queue', /* Queue */
	A.Call_Client_ID 'ID Client TMP', /* Numéro du client, en attendant de récupérer toutes les infos dans la table clients */
	(CONVERT(CHAR(23),A.Call_DateEntered,120)) 'Date de création', /* Date ouverture Ticket avec convert de la date */
	'Date de fermeture' = CASE A.Call_HistoFlag WHEN 1 THEN (CONVERT(CHAR(23),A.Call_DateCompleted,120)) ELSE '' END, /* Date fermeture ticket et convert + affichage uniquement si le ticket a été fermé */
	C.Client_FirstName 'Prénom Client',
	C.Client_LastName 'Nom Client',
	C.Client_City 'Localisation Client',
	'Activité' = CASE D.lang_Text WHEN '(Aucun)' THEN '' ELSE D.lang_Text END, /* Activité si remplie */
	'Domaine' = CASE A.Call_ivProdType_ID WHEN 0 THEN '' ELSE E.ivProdType_Desc1 END, /* Domaine si remplie */
	'Application' = CASE A.Call_ivProduct_ID WHEN 0 THEN '' ELSE F.ivProdData_Text END /* Application si remplie */	
 
FROM Calls A, Lang B, Client C, Lang D, ivProdType E, ivProdData F /* Tables */
 
WHERE
	A.Call_LST_CALLSTAT <> 5515 /* N'est pas une requete */
	AND A.Call_LST_QUEUE in (6228, 7969) /* Ticket pour ISA */
	AND A.Call_LST_QUEUE = B.Lang_Id /* Jointure */
	AND A.Call_Client_ID = C.Client_ID /* Jointure pour la table client*/
	AND A.Call_LST_CALLCAT = D.Lang_ID /* Type de requête */
	AND A.Call_ivProdType_ID *= E.ivProdType_ID /* Dimaine */
	AND A.Call_ivProduct_ID *= F.ivProdData_ProductID /* Application */
 
ORDER BY A.Call_ID DESC /* Tri */
J'ai laissé ma requête complète, j'espère que c'est compréhensible.

Merci.