Я не совсем уверен, что это правильный подход, это моя ситуация:
В настоящее время я пытаюсь выбрать 15 галерей и затем соединить их с таблицей пользователя через идентификатор, но я также хочу выбрать одно случайное изображение из каждой галереи, однако, насколько я знаю, вы не можете ограничить левое объединение изображение), чтобы выбрать только одно случайное изображение без подзапроса.
Вот что я получил до сих пор, но он не работает должным образом:
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 ..
Edit:
Активная запись с CodeIgniter