2

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

我有 3 张桌子

我知道登录user_id是 25

Users(id,first_name,last_name),

userproduducts(user_id,product_id),

Product(id,title,description,price)

userproducts是多对多解析表

我怎样才能编写一个查询,让我获得用户的 ,first_name并获得userproducts 表中产品的产品表中的所有内容?last_nameid=25user_id = 25

谢谢你

4

3 回答 3

6

一个简单的直接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;
于 2013-03-28T10:24:31.120 回答
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

在没有产品的情况下,产品信息将为空。如果您不想要空产品,请使用 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
于 2013-03-28T10:34:20.280 回答
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;
于 2013-03-28T10:27:49.483 回答