您好我是Sql的新手,我正在重新构建一个简单的PHP仪表板。我有mysql数据库,我的查询有问题。
public function get_posts($thread_id, $start, $limit)
{
$sql = "SELECT a.*, b.username, b.id as user_id FROM ".TBL_POSTS." a, ".TBL_USERS." b
WHERE a.thread_id = ".$thread_id." AND a.author_id = b.id
ORDER BY a.date_add ASC LIMIT ".$start.", ".$limit;
return $this->db->query($sql)->result();
可能发生的情况是a.author id不等于b.id,因为删除了用户。我需要改进我的sql以显示已删除用户的帖子,并显示一些由已删除用户发布的信息。
谢谢
答案 0 :(得分:1)
尝试以下代码。它选择表b中的所有行并查找表a中的所有匹配项,或者如果a中没有相应的行,则在a的所有字段中放置NULL。
SELECT a.*, b.username, b.id as user_id FROM ".TBL_POSTS." a LEFT JOIN ".TBL_USERS." b
ON a.author_id = b.id
WHERE a.thread_id = ".$thread_id
答案 1 :(得分:0)
编辑:
您必须使用Foreig Keys并将LEFT联接添加到您的查询