我试图从两个表中获取数据:users
和posts
使用left join
。左连接输出不正确的第一个数据块
$items = '';
$sql = "
SELECT u.id as uid
, u.name as uname
, p.id as pid
, p.date as pdate
, p.title as ptitle
, p.user as puser
FROM users u
LEFT
JOIN posts p
ON u.id = p.user
WHERE u.role = 'mod'
GROUP
BY p.title;";
$stmt = $db->query($sql);
while($row = $stmt->fetch()){
$date = strtotime($row['pdate']);
$date = date("d-m-Y", $date);
$items.= "<div class='itemp' data-id=" . $row['pid'] . " data-user='" . $row['uname'] . "'>" .
"<span class='spandate'>" . $date . "</span>" .
"<span class='spantitle'>" . $row['ptitle'] . "</span>" .
"<span class='spanuser'>" . $row['uname'] . "</span>" .
"</div>\n";
}
echo $items;
输出,除了第一行OK,我看到日期 - 1.1.1970 - 但没有在posts
任何行与日期。 Plus - 缺少ptitle
。
此外,有没有更好的方式来创建此查询,避免as
关键字?
期望的输出(单块):
<div class='itemp' data-id=116 data-user='JOHN SMITH'><span class='spandate'>01-12-2017</span><span class='spantitle'>BLUE SKY</span><span class='spanuser'>JOHN SMITH</span></div>
1.1.1970是unix时间的默认日期,但不知道为什么它是你的第一行 – RealCheeseLord
你有一个GROUP BY子句,但没有聚合函数。我不确定我们应该怎么做。 – Strawberry
请参阅:[为什么我应该为我认为是非常简单的SQL查询提供一个MCVE?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve - 对于什么似乎对我来说是一个非常简单的SQL查询) – Strawberry