简单的SQL查询 - 对齐外键

时间:2017-04-30 21:08:29

标签: mysql sql search

我在MySQL中使用简单的查询需要比预期更长的时间。我认为这将是一个嵌套查询,但我不容易看到它。

我有3个表:用户,评论和企业。注释包含business_id,user_id为外键。

所以我想要users.name和comments.review的结果,包含业务号。

所以我的第一次(和错误的)尝试是:

SELECT users.name, users.image, comments.review 
FROM reviews JOIN users JOIN businesses 
WHERE reviews.user_id=users.id AND reviews.business_id=4;

我想设置PrimaryKey.user_id等于ForeignKey.users.id。 从所有评论中,我想从business_id = 4中获取这些评论。

它让我无法理解' WHERE'条款。所以不确定我是否可以使用嵌套查询或使用JOIN子句来解决这个问题?

任何帮助将不胜感激! 谢谢你们。 [编辑查询]

2 个答案:

答案 0 :(得分:1)

尝试此操作,如有任何疑问,请与我联系。

select c.name,c.image,a.review
from
comments a
inner join
(select * from buisnesses where buisness_id = 4) b
on a.buisness_id = b.buisness_id 
inner join
users c
on a.user_id = c.user_id;  

select b.name,b.image,a.review
from
comments a
inner join
users b
on a.user_id = b.user_id  
where a.buisness_id = 4;

答案 1 :(得分:1)

尝试一下:

SELECT 
    users.name, 
    users.image, 
    comments.review 
FROM reviews 
JOIN users 
ON reviews.user_id = users.id
JOIN businesses 
ON reviews.business_id = business.business_id
WHERE reviews.business_id=4;

由于您未使用业务表中的任何列,因此您可以将其从查询中删除:

SELECT 
    users.name, 
    users.image, 
    comments.review 
FROM reviews 
JOIN users 
ON reviews.user_id = users.id
WHERE reviews.business_id=4;