Mysql 仅当3个表中有1个表的信息时,才连接3个表

Mysql 仅当3个表中有1个表的信息时,才连接3个表,mysql,sql,Mysql,Sql,我有三张桌子 | Likes | | Friends | | Item | ----------------------------- ------------------ ------------------- | UserID | LikeID | itemID | | user1 | user2|

我有三张桌子

|           Likes           |            |    Friends     |             |     Item        |
-----------------------------            ------------------             -------------------
| UserID  | LikeID | itemID |            | user1  |  user2|             |     itemID      |

我想根据用户是否喜欢Likes表中的某个项目以及用户是否也必须是friends表中用户的朋友以及他们是否都喜欢该项目来加入这3个表

Friends表的设置方式是,如果用户添加了一个朋友,则用户ID将被放置在user1或user2中,具体取决于首先请求该朋友的用户,因此假设1的用户ID可以位于user1列或user2列中,users friend将位于相反的列中

然后,我将对itemID表进行内部联接,以获得两个用户都喜欢的项

我不是SQL专家,所以我发现这非常困难,我给你的任何代码示例都是垃圾。我已经尝试了所有类型的左连接内部连接右连接我已经连接了这些表中的垃圾,但是我没有得到正确的数据


在如何实现这一点上,任何朝着正确方向的指导都将是伟大的,我没有想法。请让我知道我能给你的任何进一步信息。

我相信这正是你想要的:

选择a.user1、b.likeid、a.user2、c.likeid、d.itemid
来自朋友a
内部连接类似于a.user1=b.userid上的b
内部连接类似于a.user2=c.userid上的c
上的内部联接项d(b.itemid=d.itemid和c.itemid=d.itemid);

下面是一个SQLFIDLE演示:

您使用的是什么平台(MySQL、MSSQL、Oracle)?phpmyadmin上的MySQL来标记这些,并显示您尝试了什么,得到了什么结果,以及对错误原因的解释。不幸的是,这不会返回任何结果。请看SQL小提琴。如果没有,那么您的数据中有一些不同的地方,您没有向我们展示。