小编Kav*_*aft的帖子

左连接的挣扎 - 产品

我有一个很简单的问题要问你。

我有一张桌子

 products [ID,Name,Category,Price]
Run Code Online (Sandbox Code Playgroud)

和一张桌子

product_client[ID,product_ID,client_ID]
Run Code Online (Sandbox Code Playgroud)

产品表包含当然所有的产品,但什么product_client所做的是,它是存储一些产品是专为某个客户。

所以我为此写了一个小查询

SELECT * 
FROM product
LEFT JOIN product_client ON product.ID = product_client.product_id
WHERE product_client.client_id =1
Run Code Online (Sandbox Code Playgroud)

一切正常,专门为该客户退回产品。但我想要的更多 -产品表就像一本字典,在该客户之上有他自己的产品。所以我需要得到整个products表,加上上面的查询输出。

有小费吗?以这种方式设置它是个好主意吗?

考虑以下情况:

  • 在数据库中,我们有 ids 1.2.3.4.5
  • 产品 ID 1.2 分配给客户 1
  • 产品 ID 3.5 分配给客户端 2。

我们要查询客户端 1。所以我们希望得到以下 id:1.2.5,因为 3 属于客户端 2,而数字 4 是一个全局产品(未分配)。任何未分配的都是全局产品。

产品表

 products [ID,Name,Category,Price]
Run Code Online (Sandbox Code Playgroud)

客户表

product_client[ID,product_ID,client_ID]
Run Code Online (Sandbox Code Playgroud)

product_client 表

SELECT * 
FROM product
LEFT JOIN product_client ON product.ID = product_client.product_id
WHERE product_client.client_id =1
Run Code Online (Sandbox Code Playgroud)

client_ID = 1 的期望输出 …

mysql

5
推荐指数
1
解决办法
414
查看次数

标签 统计

mysql ×1