Bonjour,

Je viens de me rendre compte que MySQL n'autorisait pas de sous-requêtes dans la clause FROM pour la création de vues, c'est quand même très dommage... Du coup j'ai jeté un coup d'oeil sur les contournements possibles mais aucun ne m'emballe vraiment question performances... Globalement je veux arriver à ça (qui n'est donc pas possible) :

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
 
select 
  US.idUser,
  IFNULL(SVT.score,0) + IFNULL(SC.score,0) as score,
  IFNULL(SVT.score,0) as scoreVoteTruth,
  IFNULL(SC.score,0) as scoreChallenge
from
  user US
left join
  (select 
    idUser,
    sum(voteUp) as score
  from truth
  group by idUser) as SVT on SVT.idUser = US.idUser
left join
  (select 
    idUserTo,
    sum(5) as score
  from challenge
  group by idUserTo) as SC on SC.idUserTo = US.idUser
Comme alternative je n'ai trouvé que celle ci qui me paraît catastrophique question performances:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
select 
  US.idUser,
  IFNULL((select sum(voteUp) from truth where idUser = US.idUser),0)
  + IFNULL((select sum(5) from challenge where idUserTo = US.idUser),0) as score,
  IFNULL((select sum(voteUp) from truth where idUser = US.idUser),0) as scoreVoteTruth,
  IFNULL((select sum(5) from challenge where idUserTo = US.idUser),0) as scoreChallenge
from
  user US
Avez-vous en tête une solution un peu plus décente?

Merci d'avance.