problème requete SQL 2008 [RESOLU] - SQL/NoSQL - Programmation
Marsh Posté le 25-03-2011 à 13:14:14
doumbe26 a écrit : |
le problème vient de la partie en gras : tu ne dois pas indiquer toutes tes tables dans le FROM en cas de jointure, mais utiliser la syntaxe suivante :
FROM table1 t1 INNER JOIN table2 t2 ON t1.champ = t2.champ INNER JOIN table t3 ON t2.champ = t3.champ, etc..;
tu peux éventuellement regrouper tous les INNER JOIN et les ON
Marsh Posté le 25-03-2011 à 13:51:36
Harkonnen a écrit : |
d'accord par contre j'ai un problème pour la partie en gras ci-dessous (une table jointe à 2 table):
SELECT bide.IDNIP AS 'NIP', bide.IDNOM AS 'NOM', bide.IDPREN, CONVERT(VARCHAR(10),IDDATNAIS,103) AS 'DATE_NAISSANCE', bsej.SESEJ, bsej.SESTATSEJ, CONVERT(VARCHAR(10),INDATDEB,103) AS 'DATE_INTERVENTION', mcaactes.COD_ACTE, auf.UFCOD AS 'UF_EXECUTANTE', aperso.PENOM
FROM mcaactes INNER JOIN minterv ON mcaactes.INCLEUNIK = minterv.INCLEUNIK,
mcaactes INNER JOIN aperso ON mcaactes.PEEXE = aperso.PECLEUNIK,
bsej INNER JOIN minterv ON bsej.SECLEUNIK = minterv.SECLEUNIK,
bide INNER JOIN bsej ON bide.IDCLEUNIK = bsej.IDCLEUNIK,
auf INNER JOIN mcaactes ON auf.UFCLEUNIK = mcaactes.UFEXE
ORDER BY minterv.INDATDEB DESC
Sinon le reste à l'aire correct ?
Marsh Posté le 25-03-2011 à 13:57:26
Ce n'est pas comme ca que les join fonctionnent.
D'abord lis la doc sur les joins (http://msdn.microsoft.com/en-us/li [...] L.80).aspx et http://msdn.microsoft.com/en-us/library/ms177634.aspx).
Tu peux partir de ca, mais il manque des infos:
Code :
|
Sans le dernier join tu finis avec un produit cartésien et ce n'est probablement pas ce que tu cherches.
Marsh Posté le 25-03-2011 à 15:44:42
c'est Ok pour cette requète :
Code :
|
par contre j'ai trouvé une requète avec des *= a transformer aussi en JOIN... mais j'ai des erreur 'l'identificateur en plusieur parties "bufac.ufcleunik" et "bactsej.a1cleunik" ne peut pas etre lié".
Code :
|
Marsh Posté le 25-03-2011 à 11:49:12
Bonjour,
voila j'ai une requête qui fonctionné très bien sur SQL 2000, et maintenant que je suis passé à SQL 2008 elle ne marche pas.
Message erreur "La requete utilise des opérateurs de jointure externe non AINSI...."
SELECT bide.IDNIP AS 'NIP', bide.IDNOM AS 'NOM', bide.IDPREN, CONVERT(VARCHAR(10),IDDATNAIS,103) AS 'DATE_NAISSANCE', bsej.SESEJ, bsej.SESTATSEJ, CONVERT(VARCHAR(10),INDATDEB,103) AS 'DATE_INTERVENTION', mcaactes.COD_ACTE, auf.UFCOD AS 'UF_EXECUTANTE', aperso.PENOM
FROM MEDIANE.dbo.aperso aperso, MEDIANE.dbo.auf auf, MEDIANE.dbo.bide bide, MEDIANE.dbo.bsej bsej, MEDIANE.dbo.mcaactes mcaactes, MEDIANE.dbo.minterv minterv
WHERE mcaactes.INCLEUNIK = minterv.INCLEUNIK AND bsej.SECLEUNIK = minterv.SECLEUNIK AND bide.IDCLEUNIK = bsej.IDCLEUNIK AND mcaactes.PEEXE = aperso.PECLEUNIK AND auf.UFCLEUNIK = mcaactes.UFEXE
ORDER BY minterv.INDATDEB DESC
j'ai essayer d'utiliser des JOIN...
SELECT bide.IDNIP AS 'NIP', bide.IDNOM AS 'NOM', bide.IDPREN, CONVERT(VARCHAR(10),IDDATNAIS,103) AS 'DATE_NAISSANCE', bsej.SESEJ, bsej.SESTATSEJ, CONVERT(VARCHAR(10),INDATDEB,103) AS 'DATE_INTERVENTION', mcaactes.COD_ACTE, auf.UFCOD AS 'UF_EXECUTANTE', aperso.PENOM
FROM MEDIANE.dbo.aperso aperso, MEDIANE.dbo.auf auf, MEDIANE.dbo.bide bide, MEDIANE.dbo.bsej bsej, MEDIANE.dbo.mcaactes mcaactes, MEDIANE.dbo.minterv minterv
INNER JOIN minterv mv ON (mcaactes.INCLEUNIK = mv.INCLEUNIK AND bsej.SECLEUNIK = mv.SECLEUNIK)
INNER JOIN bide bi ON bi.IDCLEUNIK = bsej.IDCLEUNIK
INNER JOIN mcaactes ms ON (ms.PEEXE = aperso.PECLEUNIK AND auf.UFCLEUNIK = ms.UFEXE)
ORDER BY minterv.INDATDEB DESC
et j'ai ce message d'erreur :
"L'identificateur en plusieurs parties 'XXXXXXX' ne peut pas être lié..."
Message édité par doumbe26 le 04-04-2011 à 09:23:57