0

我想从 3 个表中检索行 - LikeTable、ClosetTable、FollowTable 以显示一个人关注的所有用户的活动。这是一个网站。ClosetTable 是用户产品的表。LikeTable 是产品的喜欢表,Followtable 是关注者和关注者的表。

目前,我有

SELECT c.user, c.productName
FROM ClosetTable AS c
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed
WHERE f.follows = 'tony'

这将返回人员的行,'tony' 与产品名称一起跟随。但是,我希望以相同的方式从 LikeTable 和 FollowTable 中获取行。那么,您能否建议一种仅执行 1 次查询以从所有 3 个表中获取行的方法?

4

2 回答 2

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。

于 2013-07-11T15:11:38.537 回答
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,因为您将 f.follows = 'tony' 放在 WHERE 子句中。

否则,删除 WHERE 子句并将条件放在 INNER JOIN 中。就像是 :

LEFT JOIN FollowTable AS f ON c.user = f.isFollowed AND f.follows = 'tony'
于 2013-07-11T15:20:30.497 回答