【问题标题】:MySQL SELECT non empty value with unique invoice numbersMySQL SELECT 具有唯一发票编号的非空值
【发布时间】:2015-07-21 14:53:57
【问题描述】:

我有一个包含所有产品销售的表格,表格包含:

id
date
product
make
model
cost
taxes
invoice

每件售出的产品都会单独插入到表格中,因此如果客户购买了 3 种具有相同发票编号的不同产品,比如说 (0009),那么表格将如下所示

product = example one
make = samsung
model = demo one
cost = 100
taxes = 19
invoice = 0009

第二个插入的产品

product = example two
make = samsung
model = demo two
cost = 200
taxes = 38
invoice = 0009

现在的问题是:

我需要在一天或一周或一个月内显示所有发出的发票,因此我使用以下代码:

$invoices = mysqli_query($db, "SELECT * FROM `sales` WHERE `date` = '$today'");

我得到的结果是在此日期内售出的所有产品。但我只需要显示每张发票 1 个产品(因为我只需要显示发票编号),如果发票有超过 1 个产品,它会重复。我知道这是因为我没有过滤查询,但问题是我真的不知道如何实现这一点。有人知道怎么做吗?

I tried with LIMIT 1 but I get only 1 result ...

请编辑注释

有些产品没有发票编号,因为我把这些产品卖给了朋友,所以字段(发票)是空的,这就是为什么我需要过滤这个,那列中带有空发票的产品销售不会显示

【问题讨论】:

  • 桌子有什么限制吗?
  • 你的意思是限制?没有人,因为我们处于测试模式,所以我已将所有权限设置为 mysql 用户
  • 您的问题不清楚。您希望哪些列出现在结果集中?你能向我们展示一个期望的输出示例吗?
  • 您只想查看唯一的发票编号吗?是否有任何产品被报告回来有关系吗?
  • 没错,每次销售只显示一次唯一的发票编号,无论在同一张发票下销售多少产品,它只显示一次,如果没有发票(数据库中为空),那么它得到没有显示

标签: mysql


【解决方案1】:

试试

"SELECT * FROM `sales` WHERE `date` = '$today' GROUP BY `invoice`"

无论如何,我认为您应该始终有一个发票编号,也许是不同的编号,即使您将它们卖给了朋友。 :)

如果您不想要空发票号码:

// Assuming by empty you mean NULL, please modify accordingly
"SELECT * FROM `sales` WHERE `date` = '$today' AND `invoice` IS NOT NULL GROUP BY invoice"

【讨论】:

  • 如果发票字段为空就不会显示对吗?
  • 还是会出现在上面的结果集中,但是只有一次,我会更新答案
  • 只是一件小事。这个查询的正确形式如何?它给了我错误 FROM sales WHERE invoice = .$show[invoice]."); // 这个演出发票给了我错误
  • 对于 PHP 变量,您可以在双引号内访问它,但不能访问数组值。请参阅我对这个问题的回答stackoverflow.com/questions/20165804/…
猜你喜欢
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多