これが正しいアプローチであるかどうかはよくわかりません。これが私の状況です。
現在、15 のギャラリーを選択して、id を使用してユーザー テーブルに結合しようとしていますが、各ギャラリーから 1 つのランダムな画像を選択したいのですが、左の結合 (画像) を制限できないことがわかっています。サブクエリを実行せずにランダムな画像を 1 つだけピックアップします。
これは私がこれまでに得たものですが、正常に機能していません:
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でこれをやろうとしましたが、2つの左結合を行った後に行き詰まりました。ここでサブクエリを取得することは可能ですか:
$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クエリで本当に混乱し始めています..