我需要加入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

最佳答案

尝试将您的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,以便我们自己使用..然后显示您的预期结果。但这是我所看到的猜测

关于php - MySQL连接4张表并获得总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25726816/

10-13 00:49