Mysql - 如何使这项工作?

时间:2016-02-23 21:34:49

标签: mysql

我有一个mysql表产品。 它包含列“id,product_name,product_seller,price”

我正在尝试创建一个PHP脚本,以使用卖家名称(product_seller)在表格中插入/更新数据。
问题 我不知道要使用什么mysql查询来获取:

所有产品的清单无论卖家是否有,如果卖家有产品给我详细信息(ID,PRODUCT_NAME,product_seller,价格)。

我想得到的例子:

1 - 苹果 - 卖家A - 12
2 - 香蕉 - -
3 - 油 - -
4 - DVD - 卖方A - 25

product_name必须为DISTINCT

提前致谢!


*查询必须类似于“SELECT DISTINCT product_name FROM Products,让我知道卖家A有产品的地方,价格是多少,什么产品是什么产品WHERE seller_name ='卖家A'......但是,向我展示所有产品,无论卖家有没有“

2 个答案:

答案 0 :(得分:1)

似乎是一个直接的子查询,可以获得唯一的产品列表,然后是外部联接以获取卖家信息。

SELECT A.ID, A.Product_name, B.product_Seller, B.Price
FROM (SELECT DISTINCT ID, Product_Name FROM products) A
LEFT JOIN Products B
  on A.ID = B.ID
 and B.product_Seller = 'seller A'

LEFT JOIN将确保您返回与“卖方A”项目相关的所有产品和卖方信息

SQL通常在数据SETS上运行得最好。因此,我首先生成一组唯一的ID和产品,然后将其连接到您想要的卖家产品数据。左连接确保我们保留所有项目。卖方的过滤必须在JOIN本身而不是在where子句中。否则左连接本质上变成内部,因为从外连接生成的NULLS被删除。

 SELECT A.ID, A.Product_name, B.product_Seller, B.Price
 FROM (SELECT DISTINCT ID, Product_Name FROM products) A
 LEFT JOIN Products B
   on A.ID = B.ID
 WHERE B.product_Seller = 'seller A' 

无法获得理想的结果。这是因为在连接之后应用了where子句,因此将排除与卖方无关的项目。由于您需要这些记录,您必须使用左连接并在JOIN上应用限制,以便返回与卖家无关的项目。

当我最初使用SQL时,我遇到了这种类型的逻辑问题。直到我用“SETS”来考虑数据以及这些集合是如何相关的,如何解决这些问题变得更加容易。

答案 1 :(得分:0)

尝试使用

  

SELECT * FROM Products_Table;

这将获得所有表值