Bonjour a tous,
Je cherche une façon plus propre pour réécrire cette requête
Merci d’avance
update matable013
set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro
JOIN matable008 p8 ON p9.id_cl=p8.id_cl
where p9.id_st=p8.id_st and
p8.compatibilite='v'
and matable013.fa=cg.fa and p8.id_st<>-1
and cg.id_fa<>69),
set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro
JOIN matable008 p8 ON p9.id_cl=p8.id_cl
where p9.id_st=p8.id_st and
p8.compatibilite='o'
and matable013.fa=cg.fa and p8.id_st<>-1
and cg.id_fa<>69),
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
hassan007 a écrit :
Bonjour a tous, Je cherche une façon plus propre pour réécrire cette requête Merci d’avance
update matable013 set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro JOIN matable008 p8 ON p9.id_cl=p8.id_cl where p9.id_st=p8.id_st and p8.compatibilite='v' and matable013.fa=cg.fa and p8.id_st<>-1 and cg.id_fa<>69),
set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro JOIN matable008 p8 ON p9.id_cl=p8.id_cl where p9.id_st=p8.id_st and p8.compatibilite='o' and matable013.fa=cg.fa and p8.id_st<>-1 and cg.id_fa<>69),
votre requête est syntaxiquement fausse il ne peut y avoir deux fois le mot clef SET.
Commencez par l'écrire de manière compréhensible et propre et notamment en l'indentant. Ne mélangez pas les jointures dans les ON et le WHERE.
A +
-- 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 ***********************
hassan007 a écrit :
Bonjour a tous,
Je cherche une façon plus propre pour réécrire cette requête
Merci d’avance
update matable013
set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro
JOIN matable008 p8 ON p9.id_cl=p8.id_cl
where p9.id_st=p8.id_st and
p8.compatibilite='v'
and matable013.fa=cg.fa and p8.id_st<>-1
and cg.id_fa<>69),
set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro
JOIN matable008 p8 ON p9.id_cl=p8.id_cl
where p9.id_st=p8.id_st and
p8.compatibilite='o'
and matable013.fa=cg.fa and p8.id_st<>-1
and cg.id_fa<>69),
votre requête est syntaxiquement fausse il ne peut y avoir deux fois le
mot clef SET.
Commencez par l'écrire de manière compréhensible et propre et notamment
en l'indentant. Ne mélangez pas les jointures dans les ON et le WHERE.
A +
--
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 ***********************
Bonjour a tous, Je cherche une façon plus propre pour réécrire cette requête Merci d’avance
update matable013 set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro JOIN matable008 p8 ON p9.id_cl=p8.id_cl where p9.id_st=p8.id_st and p8.compatibilite='v' and matable013.fa=cg.fa and p8.id_st<>-1 and cg.id_fa<>69),
set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro JOIN matable008 p8 ON p9.id_cl=p8.id_cl where p9.id_st=p8.id_st and p8.compatibilite='o' and matable013.fa=cg.fa and p8.id_st<>-1 and cg.id_fa<>69),
votre requête est syntaxiquement fausse il ne peut y avoir deux fois le mot clef SET.
Commencez par l'écrire de manière compréhensible et propre et notamment en l'indentant. Ne mélangez pas les jointures dans les ON et le WHERE.
A +
-- 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 ***********************
hassan007
Bonjour,
update matable013 set C1 = (SELECT COUNT(*) FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE (p8.COM = 'v') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69)),
C2 = (SELECT COUNT(*) FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE (p8.COM = 'o') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69))
Merci d'avance
-- hassancf
"Fred BROUARD" a écrit :
hassan007 a écrit : > Bonjour a tous, > Je cherche une façon plus propre pour réécrire cette requête > Merci d’avance > > > update matable013 > set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro > JOIN matable008 p8 ON p9.id_cl=p8.id_cl > where p9.id_st=p8.id_st and > p8.compatibilite='v' > and matable013.fa=cg.fa and p8.id_st<>-1 > and cg.id_fa<>69), > > set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro > JOIN matable008 p8 ON p9.id_cl=p8.id_cl > where p9.id_st=p8.id_st and > p8.compatibilite='o' > and matable013.fa=cg.fa and p8.id_st<>-1 > and cg.id_fa<>69), > > votre requête est syntaxiquement fausse il ne peut y avoir deux fois le mot clef SET.
Commencez par l'écrire de manière compréhensible et propre et notamment en l'indentant. Ne mélangez pas les jointures dans les ON et le WHERE.
A +
-- 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 ***********************
Bonjour,
update matable013
set C1 = (SELECT COUNT(*)
FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN
matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN
matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST =
p8.ID_ST
WHERE (p8.COM = 'v') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69)),
C2 = (SELECT COUNT(*)
FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN
matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN
matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST =
p8.ID_ST
WHERE (p8.COM = 'o') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69))
Merci d'avance
--
hassancf
"Fred BROUARD" a écrit :
hassan007 a écrit :
> Bonjour a tous,
> Je cherche une façon plus propre pour réécrire cette requête
> Merci d’avance
>
>
> update matable013
> set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro
> JOIN matable008 p8 ON p9.id_cl=p8.id_cl
> where p9.id_st=p8.id_st and
> p8.compatibilite='v'
> and matable013.fa=cg.fa and p8.id_st<>-1
> and cg.id_fa<>69),
>
> set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro
> JOIN matable008 p8 ON p9.id_cl=p8.id_cl
> where p9.id_st=p8.id_st and
> p8.compatibilite='o'
> and matable013.fa=cg.fa and p8.id_st<>-1
> and cg.id_fa<>69),
>
>
votre requête est syntaxiquement fausse il ne peut y avoir deux fois le
mot clef SET.
Commencez par l'écrire de manière compréhensible et propre et notamment
en l'indentant. Ne mélangez pas les jointures dans les ON et le WHERE.
A +
--
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 ***********************
update matable013 set C1 = (SELECT COUNT(*) FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE (p8.COM = 'v') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69)),
C2 = (SELECT COUNT(*) FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE (p8.COM = 'o') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69))
Merci d'avance
-- hassancf
"Fred BROUARD" a écrit :
hassan007 a écrit : > Bonjour a tous, > Je cherche une façon plus propre pour réécrire cette requête > Merci d’avance > > > update matable013 > set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro > JOIN matable008 p8 ON p9.id_cl=p8.id_cl > where p9.id_st=p8.id_st and > p8.compatibilite='v' > and matable013.fa=cg.fa and p8.id_st<>-1 > and cg.id_fa<>69), > > set C1 = (select count(*) from cg JOIN matable009 p9 ON cg.id_pro=p9.id_pro > JOIN matable008 p8 ON p9.id_cl=p8.id_cl > where p9.id_st=p8.id_st and > p8.compatibilite='o' > and matable013.fa=cg.fa and p8.id_st<>-1 > and cg.id_fa<>69), > > votre requête est syntaxiquement fausse il ne peut y avoir deux fois le mot clef SET.
Commencez par l'écrire de manière compréhensible et propre et notamment en l'indentant. Ne mélangez pas les jointures dans les ON et le WHERE.
A +
-- 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 ***********************
Fred BROUARD
hassan007 a écrit :
Bonjour,
update matable013 set C1 = (SELECT COUNT(*) FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE (p8.COM = 'v') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69)),
C2 = (SELECT COUNT(*) FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE (p8.COM = 'o') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69))
Merci d'avance
Essayez :
UPDATE matable013 SET C1 = SUM(CASE WHEN p8.COM = 'v' THEN 1 ELSE 0 END), C2 = SUM(CASE WHEN p8.COM = 'o' THEN 1 ELSE 0 END) FROM matable013 T INNER JOIN CG ON T.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL = p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE p8.ID_ST <> - 1 AND CG.ID_FA <> 69
Vérifiez si des index sont présents sur : 1) matable008 (ID_CL, ID_ST) 2) matable009 (ID_CL, ID_ST) 3) CG (ID_FA) 4) matable009 (ID_PR) 5) CG (FAN) 6) matable013 (fan)
A +
-- 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 ***********************
hassan007 a écrit :
Bonjour,
update matable013
set C1 = (SELECT COUNT(*)
FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN
matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN
matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST =
p8.ID_ST
WHERE (p8.COM = 'v') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69)),
C2 = (SELECT COUNT(*)
FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN
matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN
matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST =
p8.ID_ST
WHERE (p8.COM = 'o') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69))
Merci d'avance
Essayez :
UPDATE matable013
SET C1 = SUM(CASE
WHEN p8.COM = 'v' THEN 1
ELSE 0
END),
C2 = SUM(CASE
WHEN p8.COM = 'o' THEN 1
ELSE 0
END)
FROM matable013 T
INNER JOIN CG
ON T.fan = CG.FAN
INNER JOIN matable009 p9
ON CG.ID_PR = p9.ID_PR
INNER JOIN matable008 p8
ON p9.ID_CL = p8.ID_CL
and p9.ID_ST = p8.ID_ST
WHERE p8.ID_ST <> - 1
AND CG.ID_FA <> 69
Vérifiez si des index sont présents sur :
1) matable008 (ID_CL, ID_ST)
2) matable009 (ID_CL, ID_ST)
3) CG (ID_FA)
4) matable009 (ID_PR)
5) CG (FAN)
6) matable013 (fan)
A +
--
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 ***********************
update matable013 set C1 = (SELECT COUNT(*) FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE (p8.COM = 'v') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69)),
C2 = (SELECT COUNT(*) FROM matable013 INNER JOIN CG on matable013.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL= p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE (p8.COM = 'o') AND (p8.ID_ST <> - 1) AND (CG.ID_FA <> 69))
Merci d'avance
Essayez :
UPDATE matable013 SET C1 = SUM(CASE WHEN p8.COM = 'v' THEN 1 ELSE 0 END), C2 = SUM(CASE WHEN p8.COM = 'o' THEN 1 ELSE 0 END) FROM matable013 T INNER JOIN CG ON T.fan = CG.FAN INNER JOIN matable009 p9 ON CG.ID_PR = p9.ID_PR INNER JOIN matable008 p8 ON p9.ID_CL = p8.ID_CL and p9.ID_ST = p8.ID_ST WHERE p8.ID_ST <> - 1 AND CG.ID_FA <> 69
Vérifiez si des index sont présents sur : 1) matable008 (ID_CL, ID_ST) 2) matable009 (ID_CL, ID_ST) 3) CG (ID_FA) 4) matable009 (ID_PR) 5) CG (FAN) 6) matable013 (fan)
A +
-- 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 ***********************