加入3表多对多的关系单个查询
我怎么能写出以下加入3表多对多的关系单个查询
一个MySQL查询我有3个表
我知道登录user_id
为25
Users(id,first_name,last_name)
,
userproduducts(user_id,product_id)
,
Product(id,title,description,price)
userproducts
是一个多对多的解决表
我怎么可以编写一个查询,将让我的first_name
,last_name
用户与id=25
和产品的产品表得到的一切,其中user_id = 25
在userproducts表?
谢谢
一个简单明了JOIN
会给你想要的东西:
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;
'on子句'中的未知列'ut.user_id'这是收到的错误 – Almanzt 2013-03-28 10:37:05
@ user2154840现在尝试.. – alwaysLearn 2013-03-28 10:41:38
这是本网站快速解答的一个问题,他们需要进行一些编辑得到正确。这最后看起来是正确的。 OP应该看后面的答案,他们有时写得比那些比赛首先要更加谨慎。 – 2013-03-28 10:43:08
这是通过两个连接完成。如果您想要获得没有产品的用户,它们应该是LEFT JOINS。
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
如果没有产品,产品信息将为空。如果您不想要空产品,请使用INNER JOIN,也就是前面的答案中的JOIN。
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
对不起马哈茂德它没有工作,请注意,它是25 – Almanzt 2013-03-28 10:29:16
第一个加入是错误的user_ID的,应当对up.user_id = u.id. – 2013-03-28 10:35:16
谢谢PETER WOOSTER现在正在工作 – Almanzt 2013-03-28 10:42:10