我不太确定这是否是正确的方法,这是我的情况:
我目前正在尝试选择 15 个画廊,然后通过 id 将其与用户表连接起来,但我也想从每个画廊中选择一张随机图片,但是据我所知,您不能将左连接(图片)限制为只选择一张随机图片而不进行子查询。
这是我到目前为止得到的,但它没有按应有的方式工作:
SELECT galleries.id, galleries.name, users.username, pictures.url
FROM galleries
LEFT JOIN users ON users.id = galleries.user_id
LEFT JOIN pictures ON (
SELECT pictures.url
FROM pictures
WHERE pictures.gallery_id = galleries.id
ORDER BY RAND()
LIMIT 1)
WHERE active = 1
ORDER BY RAND()
LIMIT 15
我也尝试使用Active Record执行此操作,但在执行两次左连接后卡住了,是否可以在此处获取子查询:
$this->db->select('galleries.id, galleries.name, users.id as user_id, users.username');
$this->db->from('galleries');
$this->db->join('users', 'users.id = galleries.user_id','left');
$this->db->join('pictures','pictures.gallery_id = galleries.id AND','left');
$this->db->where('active',1);
我希望它不要乱,但我真的开始对所有的 sql 查询感到困惑..