我試圖從兩個表中獲取數據: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