【发布时间】:2013-04-10 06:41:34
【问题描述】:
这是几乎可以工作的查询:
$query = '';
$query .= ' SELECT highway_code.charge_id,
highway_code.act_abbr,
highway_code.short_form_wording,
highway_code.section,
highway_code.set_fine,
highway_code_arrest_jail_tow.demerits
';
$query .= ' FROM highway_code, highway_code_arrest_jail_tow ';
$query .= ' WHERE highway_code.charge_id = ? ';
$query .= ' AND highway_code.section = highway_code_arrest_jail_tow.section ';
$query .= ' AND highway_code.act_abbr = highway_code_arrest_jail_tow.act_abbr ';
问题在于,并非所有高速公路代码收费都有记过,因此即使所有其他字段都适用,任何没有记过的费用都不会被退回。无论highway_code_arrest_jail_tow 中是否有值,我都希望退回所有费用。
【问题讨论】:
-
您需要一个
LEFT JOIN而不是这里的隐式INNER JOIN(通过逗号分隔的表名)查看codinghorror.com/blog/2007/10/… -
感谢您的链接。我认为这是我在这个话题上看到的最好的解释。但是,作为一个在创建 SQL 语句方面经验有限的新手,我不确定我会如何写出来......我现在开始做研究,但是如果解决方案很简单,你介意发布吗?谢了!