Mysql加入4个表并得到总和

时间:2014-09-08 14:38:38

标签: php mysql join

我需要加入4个表。我有用户表,需要与客户联系,并且使用关系表连接到我的配置文件,然后得到总和。

我的结果会很好

2 Thomas White   2.56 180.00 461.89 0.00 0.00 0.00 antras komentaras
3 Doina Slaivici 5.87 161.17 946.88 0.00 0.00      vienas komentaras

但问题是个人资料评论只能从单个个人资料评论中获取,而不是全部,因为有些用户的资料很少。

我的加入:

SELECT 
  *,
  users.id AS uid,
  users.sum_per_hour AS usum_per_hour,
  SUM(
    customers.sum / 4.33 / customers.days_per_week * profiles.days
  ) AS total_sum 
FROM
  users,
  relations,
  customers,
  profiles 
WHERE users.id = relations.uid 
  AND customers.id = relations.cid 
  AND profiles.uid = relations.uid 
  AND profiles.cid = relations.cid 
GROUP BY users.id 

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试将您的FROM更改为此

SELECT 
    *,
    u.id AS uid,
    u.sum_per_hour AS usum_per_hour,
    SUM(c.sum / 4.33 / c.days_per_week * p.days) AS total_sum 
FROM users u
LEFT JOIN relations r 
  ON u.id = r.uid
LEFT JOIN customers c 
  ON c.id = r.cid 
LEFT JOIN profiles p 
  ON p.uid = r.uid 
  AND p.cid = r.cid -- # -- this may need to be OR instead of AND
GROUP BY u.id 

老实说,我不知道这是否会解决你的问题...你必须问一个更好的问题..意思是显示你目前得到的结果..发布数据(不是图像)或甚至更好地发布一个sqlfiddle所以我们可以自己使用..然后显示您的预期结果。但这是我能看到的猜测