0

LikeTable、ClosetTable、FollowTable の 3 つのテーブルから行を取得して、ユーザーがフォローしているすべてのユーザーのアクティビティを表示したいと考えています。これはウェブサイト用です。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 からの行がまったく同じ方法で必要です。3 つのテーブルすべてから行を取得するために 1 つのクエリのみを実行する方法を提案できますか?

4

2 に答える 2

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'

テーブルの構造を提供しなかったため、フィールド名についていくつかの仮定を行います。

また、f.follows = 'tony' を WHERE 句に入れているので、FROM 句に FollowTable を入れてから ClosetTable に結合することをお勧めします。

それ以外の場合は、WHERE 句を削除し、条件を INNER JOIN に入れます。何かのようなもの :

LEFT JOIN FollowTable AS f ON c.user = f.isFollowed AND f.follows = 'tony'
于 2013-07-11T15:20:30.497 に答える
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'

またはそのようなもの。1 つの JOIN に制限されません。

于 2013-07-11T15:11:38.537 に答える