- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个可打印的页面,其中有指定制造商的所有销售额,列出了指定日期之间的所有产品。如果没有任何销售,则应显示 0。
表格
// Manufacturer table
// mid, manufacturer
// Products table
// pid, product, ref_manufacturer_id
// Orders table
// oid, orderPrice, orderDateTime, ref_product_id
有效的查询(没有日期限制)
SELECT prod.product, COALESCE(COUNT(pord.oid),0) AS orderCount,
COALESCE(SUM(pord.orderPrice),0) AS orderSum
FROM product_manufacturer AS manu
JOIN product_list AS prod ON prod.ref_manufacturer_id = manu.mid
LEFT JOIN product_orders AS pord ON pord.ref_product_id = prod.pid
WHERE manu.mid = :manu_id
GROUP BY prod.product;
但是一旦我将这个添加到 WHERE 语法中
WHERE manu.mid = :manu_id AND DATE(pord.orderDateTime) BETWEEN :orders_start AND :orders_end
我正在使用 PHP PDO 连接并验证 manu_id 是 int 并且 orders_start/end 已转换为 MySQL 日期格式。
但我想弄清楚的问题是,是什么导致了这个问题,当我添加日期限制时,每个未订购的产品都没有显示在输出中?
创建表的SQL
CREATE TABLE product_list (
pid bigint(20) unsigned NOT NULL AUTO_INCREMENT,
product varchar(255) NOT NULL,
ref_manufacturer_id bigint(20) unsigned NOT NULL,
PRIMARY KEY (pid),
KEY ref_manufacturer_id (ref_manufacturer_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE product_manufacturer (
mid bigint(20) unsigned NOT NULL AUTO_INCREMENT,
manufacturer varchar(255) NOT NULL,
PRIMARY KEY (mid),
UNIQUE KEY manufacturer (manufacturer)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE product_orders (
oid bigint(20) unsigned NOT NULL AUTO_INCREMENT,
orderPrice float(10,2) NOT NULL,
orderDatetime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
red_product_id bigint(20) unsigned NOT NULL,
PRIMARY KEY (oid),
KEY red_product_id (red_product_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
最佳答案
您需要将 orderDateTime
条件移动到 join 子句而不是 where 子句,例如:
SELECT prod.product, COALESCE(COUNT(pord.oid),0) AS orderCount,
COALESCE(SUM(pord.orderPrice),0) AS orderSum
FROM product_manufacturer AS manu
JOIN product_list AS prod ON prod.ref_manufacturer_id = manu.mid
LEFT JOIN product_orders AS pord
ON pord.ref_product_id = prod.pid
AND DATE(pord.orderDateTime) BETWEEN :orders_start AND :orders_end
WHERE manu.mid = :manu_id
GROUP BY prod.product;
它在 WHERE
子句中不起作用的原因是因为从外部连接返回的 NULL
值。当您在产品的 product_orders
中没有行时,外部联接会为日期字段 orderDateTime
返回 NULL,并且该行将被过滤掉,因为 NULL
不等于任何东西。
关于php - 连接表并用指定值替换空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876866/
我有一个Perl脚本,要求用户输入密码。当用户键入字符时,我该如何仅回声“ *”代替用户键入的字符? 我正在使用Windows XP / Vista。 最佳答案 您可以玩Term :: ReadKey
This question already has answers here: How to urlencode a querystring in Python? (13个回答) 7年前关闭。 我正在
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
我希望能够检测 h1 中的“/”标签,并将其替换为 ,其中.slash将充当分隔符。 var div = $('h1'); div.html(div.html().replace(/\//g, '/
我是一名 Java 初学者,目前正在寻找一种分割字符串的方法 message根据分隔符 (.) 划分为子字符串。理想情况下,我有单个句子,并且我想将每个句子包装在 HTML 标签中,即。 e. 。
MySql:我的产品表设置如下: pg_id |页面名称 1 |披萨馅饼 2 | child 菜单 Php:在循环遍历 MySQL 表中的记录时回显 html。 "; ?> 我
我正在尝试一次读取一个文本文件并将每一行打印到终端窗口。我正在使用 g++ 在 mac 上编译,例如 g++ cpp3.cpp -o cpp3。 文本文件如下所示: 20100000001 20100
这个问题在这里已经有了答案: sed fails with "unknown option to `s'" error [closed] (1 个回答) 关闭 7 年前。 我有个小问题。 我尝试用文
我有一个非常具体的问题。我正在使用 Debian。我有一个 FTP 文件夹,应用程序将在其中上传 pdf 文件,该文件将存储在 ftpfolder/EMAIL_ADDRESS 中,文件名将是 CURR
我尝试使用其 before 和 after 值的 means 填充 NaN 单元格。 type date v1 v2 0 a 2018-09 215
我在上述模拟中使用 SHM 的标准微分方程,a = -w^2*x。我正在使用 Python,并以 odeint 作为求解器。尽管对其进行了多次编辑,我仍然将输出视为直线而不是正弦曲线。代码是: fro
System.out.print("Enter the message to encrypt: "); message = s.next().toString(); // this mess
我有一个主要的 LinearLayout ,在 main.xml 文件中,在 Activity 中设置 ( setContentView )。入主LinearLayout我想添加 1-X 自定义 Li
并用括起来是否安全?
一些用户生成的文本(可能包含脚本/代码)将向公众展示。如果我过滤掉所有 和标记并用 将结果文本括起来和 ,用户提交的脚本有机会被执行吗? 请给我一个如何破解这个保护方案的例子。 最佳答案 Is it
{abc def ghi} 我已经通过在比较它是否是 { 或 } 之前先跨度包装所有字符来完成此操作。但这太慢了,我需要反转该过程,是否可以获取相对于父 div 的 cha
我想创建一个自定义 UITabBarItem 并使用 xib 文件设置其 UI,就像常规 UIView 一样。 我尝试在 UITabBarItem 上创建一个子类,但创建 xib 文件的选项不可用。
我有以下 HTML 结构: Text 1 Text 2 Text 3 Text 4 Text 5 我想找到一个包含“4”
我正在逐字创建着色工具。基本上用户可以从单词中选择几个字母并将它们分开着色,因此一个单词可以有 2 种或更多颜色。 为了跟踪所有单词,它们都有 ID,我想知道我怎么知道选择了哪些字母以及所选单词有哪些
我是 Python 的新手。我确实有一个包含单词列表的文件。它们包含丹麦字母 (ÆØÅ),但 re.compile 不理解这些字符。该函数按每个 ÆØÅ 拆分单词。文本是从 Twitter 和 Fac
C#如何在字符串中找到多余的)或(括号,并替换为@ 示例输入 )(more))) ((((more))) ((((more)) (about)((index)(more))) (about)((ind
我是一名优秀的程序员,十分优秀!