我有2个表TABLE 1
和TABLE 2
,其定义如下:
SUB-ID varchar(25)
CLICKS int(5)
ACTIONS int(4)
EARNINGS varchar(10)
EPC varchar(5)
我正在运行涉及这两个表的以下查询:
SELECT t1.CLICKS, t1.ACTIONS, t1.EARNINGS AS CurrentWeekEarnings
, t2.EARNINGS AS PastWeekEarnings
FROM `TABLE 1` AS t1, `TABLE 2` AS t2
WHERE t1.`SUB-ID` = '" . $_POST['subId'] . "'
AND t2.`SUB-ID` = t1.`SUB-ID`
对于两个表中都存在给定subId的情况,查询工作正常,但在某些情况下,给定的subId存在于TABLE 1
中但不存在于TABLE 2
中,查询结果为0行。
现在,我是MySQL的新手,我根本没有在MySQL中使用条件查询的经验。
我确实知道,如果我可以指定TABLE 2
中不存在给定subId的条件,则执行不同的查询,仅检索前3列,即来自{{的CLICKS,ACTIONS和EARNINGS 1}}并将PastWeekEarnings的值设置为$ 0.
请告诉我如何实现这一点,即如何有条件地在两个查询之间切换,以及当TABLE 1
中没有subId时将PastWeekEarnings的值设置为$ 0。
由于
答案 0 :(得分:1)
您应该考虑使用LEFT JOIN
代替INNER JOIN
SELECT t1.CLICKS,
t1.ACTIONS,
t1.EARNINGS AS CurrentWeekEarnings,
t2.EARNINGS AS PastWeekEarnings
FROM `TABLE 1` t1 LEFT JOIN `TABLE 2` t2
ON t2.`SUB-ID` = t1.`SUB-ID`
WHERE t1.`SUB-ID` = '" . $_POST['subId'] . "';