CREATE TABLE IF NOT EXISTS `tblflash` (
`FID` int(11) NOT NULL AUTO_INCREMENT,
`fname` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`FID`)
)
CREATE TABLE IF NOT EXISTS `tblcount` (
`ID` int(50) NOT NULL AUTO_INCREMENT,
`SID` int(50) NOT NULL,
`FID` int(11) NOT NULL,
`sDateTime` datetime NOT NULL,
`elaspedTime` int(11) NOT NULL,
PRIMARY KEY (`ID`)
)
$sqldate1 =
"SELECT distinct tblflash.FID, tblflash.fname, IFNULL(sum(tblcount.elaspedTime),0)
FROM tblflash
left outer JOIN tblcount
ON tblflash.FID = tblcount.FID
WHERE tblcount.SID='".$_SESSION['SID']."'
ORDER BY tblflash.FID";
让我们说tblflash中有10行在tblcount中有10行和5行。 显示的记录仅显示5行。我想显示所有fname没有重复,如果null设置为0.
怎么了?
答案 0 :(得分:1)
您的WHERE tblcount.SID='".$_SESSION['SID']."'
正在使查询充当INNER JOIN
- 您需要添加or tblcount.SID IS NULL
答案 1 :(得分:1)
您的WHERE
条件适用于加入结果,不专门适用于tblcount
行。当两个表之间没有匹配时,连接将在所有tblcount
列中返回NULL。因此,NULL = 'whatever'
不会评估为true
,并且不会返回该行。
将OR tblcount.SID IS NULL
添加到WHERE作为@cjk has suggested或将WHERE条件作为ON子句的一部分,如下所示:
$sqldate1 =
"SELECT distinct tblflash.FID, tblflash.fname, IFNULL(sum(tblcount.elaspedTime),0)
FROM tblflash
left outer JOIN tblcount
ON tblflash.FID = tblcount.FID
AND tblcount.SID='".$_SESSION['SID']."'
ORDER BY tblflash.FID";
答案 2 :(得分:0)
其他5行<{1}}中的SID
没有数据