Php 在单个查询中连接3个表多对多关系

Php 在单个查询中连接3个表多对多关系,php,mysql,sql,many-to-many,Php,Mysql,Sql,Many To Many,如何为以下内容编写一个MYSQL查询 我有三张桌子 我知道登录的用户id是25 用户(id、名、姓) 用户产品(用户id、产品id) 产品(id、标题、说明、价格) userproducts是一个多对多解析表 我如何编写一个查询,以获取id为25的用户的名,姓,并获取userproducts表中产品表中的所有内容,其中用户id=25 谢谢你一个简单明了的加入将为你提供你想要的: SELECT u.first_name, u.last_name, p.* FROM users

如何为以下内容编写一个MYSQL查询

我有三张桌子

我知道登录的
用户id
是25

用户(id、名、姓)

用户产品(用户id、产品id)

产品(id、标题、说明、价格)

userproducts
是一个多对多解析表

我如何编写一个查询,以获取id为25的用户的
,并获取userproducts表中产品表中的所有内容,其中
用户id=25


谢谢你

一个简单明了的
加入
将为你提供你想要的:

SELECT 
  u.first_name,
  u.last_name,
  p.*
FROM users              As u
INNER JOIN userproducts AS up ON up.user_id     = u.id
INNER JOIN product      AS  p ON up.product_id  = p.id
WHERE u.id = 25;
试试这个

SELECT 
 ut.first_name,
 ut.last_name,
 pt.*
FROM users              As ut
INNER JOIN userproducts AS upro ON upro.user_id     = ut.id
INNER JOIN product      AS  pt ON upro.product_id = pt.id
WHERE ut.id = 25;

这是通过两个连接完成的。如果您希望获得没有产品的用户,则应将其保留为左联接

SELECT u.first_name, u.last_name, p.*
FROM users u
LEFT JOIN userproducts up ON u.id = up.user_id
LEFT JOIN product on up.product_id = p.id
WHERE p.id = 25
如果没有产品,则产品信息将为空。如果您不想要空的产品,请使用内部联接,也就是在前面的答案中作为联接编写的联接

SELECT u.first_name, u.last_name, p.*
FROM users u
JOIN userproducts up ON u.id = up.user_id
JOIN product on up.product_id = p.id
WHERE p.id = 25

抱歉,Mahmoud,它不起作用,请注意,它是25@user21谢谢,请把我下面的答案投上去,从一开始就是正确的。并在名称前加一个@,以便它们链接到用户的个人资料。Thanks@PeterWooster-抱歉,现在已修复,谢谢。“on子句”中的未知列“ut.user\u id”这是收到的错误这是此网站快速回答的一个问题,他们需要进行一些编辑才能更正。这一条看起来终于正确了。OP应该看看后面的答案,有时候他们写得比那些争先的人更仔细。