我想从3个表中检索行 - LikeTable,ClosetTable,FollowTable来显示一个人正在关注的所有用户的活动。这是一个网站。 ClosetTable是用户产品的表。 LikeTable是以下产品和关注者的表格。
目前,我有
SELECT c.user, c.productName
FROM ClosetTable AS c
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed
WHERE f.follows = 'tony'
这将返回人的行,'tony'跟随productname。但是,我想以相同的方式完全使用LikeTable和FollowTable中的行。那么你能建议一种方法只做一个查询来获取所有3个表中的行吗?
答案 0 :(得分:0)
更多人加入:
SELECT c.user, c.productName
FROM ClosetTable AS c
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed
JOIN LikeTable as l on c.user = l.liked
WHERE f.follows = 'tony'
或类似的东西。您不限于一个JOIN。
答案 1 :(得分:0)
你可以试试看起来像这样的东西:
SELECT c.user, c.productName
FROM FollowTable AS f
INNER JOIN ClosetTable AS c ON c.user = f.isFollowed
INNER JOIN LikeTable AS l ON c.user = l.userliked
WHERE f.follows = 'tony'
我对字段名称做了一些假设,因为你没有提供表格的结构。
另外,我建议您将FollowTable放在FROM子句中,然后将它连接到ClosetTable,因为您在WHERE子句中放了f.follows ='tony'。
否则,删除WHERE子句并将条件放在INNER JOIN中。 类似的东西:
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed AND f.follows = 'tony'