数据库查询选择客户信息

时间:2018-10-10 06:58:10

标签: mysql database heidisql

我有一个问题,我试图从数据库中检索具有以下信息的用户数据:

我需要的是购买了参考号为1800和1898的产品的客户的名字,姓氏和电子邮件。 在2018-05-18之前。

我已经尝试过以下查询:

",".join(x)

但是这只返回了 ALL 个客户的所有信息,这不是我想要的。

2 个答案:

答案 0 :(得分:0)

假设所有值均来自第一个表ps_customer,则必须仅使用第一个值来指定所有值与table.column一起使用的表。

为更好的可读性,您应该为表赋予别名AS,如下所示。

您还必须在ON语句中指定列要连接到的属性。两个表的值必须相同。

select cus.firstname, cus.lastname , cus.email 
from ps_customer AS cus
inner join ps_product AS prod
ON cus.uniqueKey = prod.uniqueKey
where prod.reference in (1800,1898) and prod.date_add >= 2018-05-18;

编辑: 加上图片,我假设您有一个销售表,该销售表涉及客户和产品。我相信构造此查询的最佳方法是:

SELECT customer.firstname, customer.lastname, customer.email
FROM ps_product_sale AS sale               (if this is the table with sales records)
INNER JOIN ps_product AS product
      ON sale.id_product = product.id_product
INNER JOIN ps_customer AS customer
      ON customer.id_customer = sale.id_customer
WHERE product.reference in (1800,1898) 
      AND product.date_add >= 2018-05-18;

答案 1 :(得分:0)

我宁愿使用两个表共有的唯一键将ps_product表连接到ps_customer表(无论是客户ID还是产品ID,取决于您在两个表中都可用的列),并且然后将我的限制放在单独的where子句中。还要将日期放在单引号中的where子句中:

例如

select ps_customer.firstname, lastname , email
from ps_customer c
inner join ps_product p on c.customerid = p.customerid
where ps_product.reference in (1800,1898) and ps_product.date_add >= '2018-05-18';