如何为以下
编写一个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
in的产品的产品表中的所有内容userproducts表??
谢谢
答案 0 :(得分:5)
一个简单直截了当的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;
答案 1 :(得分:3)
这是通过两个连接完成的。如果您想要获得没有产品的用户,他们应该是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
如果没有产品,产品信息将为空。如果您不想要null产品,请使用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
答案 2 :(得分:2)
试试这个
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;