SQL LEFT JOIN&和关键字

时间:2018-05-22 14:09:50

标签: php mysql sql

目前有一个使用以下SQL语句的函数:

SELECT `plans`.`concurrents` 
FROM `plans` 
LEFT JOIN `users` ON `users`.`membership` = `plans`.`ID` 
WHERE `users`.`ID` = ?`

我正在尝试添加到SQL语句中,因此它还会添加' extra_concurrents'中的值。 '用户'中的列表到从上面的SQL语句返回的值。

我试过但没有运气:

SELECT `plans`.`concurrents` 
FROM `plans` 
LEFT JOIN `users` ON `users`.`membership` AND `users`.`extra_concurrents` = `plans`.`ID` 
WHERE `users`.`ID` = ?`

我需要将plans.concurrents和users.extra_concurrents的总价值加在一起

4 个答案:

答案 0 :(得分:1)

我需要说一下你的查询。 left join完全没必要。您的where子句将其转换为内连接。

然后,我推荐表别名,以简化查询。剩下的就是补充:

SELECT p.concurrents + coalesce(u.extra_concurrents, 0)
FROM plans p JOIN
     users u
     ON u.membership = p.ID
WHERE u.ID = ?;

另请注意coalesce(),以防users.extra_concurrents列为NULL

答案 1 :(得分:0)

当您加入表格时,您可以调用其他表格中的列

php artisan cache:clear
php artisan view:clear
php artisan route:clear

答案 2 :(得分:0)

您需要使用多个联接而不是"和"。如果没有看到您的数据结构,很难准确地说出您需要的内容,但可能是这样的:

SELECT `plans`.`concurrents` 
FROM `plans` `A`
LEFT JOIN `users` `B` ON `B`.`membership` = `A`.`ID`
INNER JOIN  `users` `C` ON `C`.`extra_concurrents` = `A`.`ID` 
WHERE `users`.`ID` = ?`

答案 3 :(得分:0)

SELECT sum((`plans`.`concurrents`)+(`users`.`extra_concurrents`))
FROM `plans` 
LEFT JOIN `users` ON `users`.`membership` = `plans`.`ID` 
WHERE `users`.`ID` = ?`
  

注意:在左表上添加条件不好。

祝你好运