Php 在单个查询中连接3个表多对多关系
如何为以下内容编写一个MYSQL查询 我有三张桌子 我知道登录的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
用户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应该看看后面的答案,有时候他们写得比那些争先的人更仔细。