我有一个帖子表,其中包含4个其他表的连接查询。其中3个是一对一关系,但第4个是一对多关系。我希望查询每个帖子只返回1行。我到目前为止所尝试的是这样的 -
$query = DB::table('posts')
->select('posts.*',
'subcategories.subcategory_title_en',
'subcategories.subcategory_title_bn',
'categories.category_title_en',
'categories.category_title_bn',
'users.*',
'postimages.postimage_thumbnail'
)
->join('subcategories', 'subcategories.subcategory_id', '=', 'posts.subcategory_id')
->join('categories', 'categories.category_id', '=', 'subcategories.parent_category_id')
->join('users', 'users.id', '=', 'posts.user_id')
->join('postimages', 'postimages.post_id', '=', 'posts.post_id');
$query->groupBy('posts.post_id');
echo $query->count();
exit();
我目前在数据库中有50个帖子,但查询会返回每个postimages的所有行,每个帖子的行数超过1行。我认为不同只会显示每个post_id一次?我在这里缺少什么?
如果有人告诉我如何使用查询构建器执行此操作,我更愿意。因为这将在不同的列上进行大量搜索,并且我希望它尽可能快。
这是一个更简单的版本 -
$query = DB::table('posts')
->select('posts.*','postimages.postimage_thumbnail')
->join('postimages', 'postimages.post_id', '=', 'posts.post_id')
->groupBy('posts.post_id');
echo $query->count();
exit();
奇怪的是laravel"显示的SQL查询。从posts
上的postimages
内部加入postimage_thumbnail
选择posts
。*,postimages
。postimages
。post_id
= {{1} } posts
分组post_id
。posts
"在mysql中正常工作
答案 0 :(得分:2)
你应该使用groupby
试试此代码
clang++-5.0 hello.cpp -fdenormal-fp-math=preserve-sign
在" mysql"中的config / database.php中改变:严格' =>是,为假