io non sono del tutto sicuro se questo è l'approccio giusto, questa è la mia situazione:mysql - subquery e si unisce
Attualmente sto cercando di selezionare 15 gallerie e poi a sinistra unirsi con la tabella degli utenti attraverso il id ma voglio anche selezionare un'immagine casuale da ogni galleria, ma da quello che so non si può limitare il join sinistro (immagine) per ottenere solo un'immagine casuale senza fare una sottoquery.
Ecco quello che ho ottenuto finora, ma la sua non funziona come dovrebbe:
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
Ho anche cercato di fare questo con attivo Record ma mi sono bloccato dopo aver fatto due a sinistra si unisce, è possibile per fare ottenere un subquery qui:
$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);
spero proprio di non disordinato, ma sto davvero iniziando a diventare confuso da tutte le query SQL ..
Edit: Active Record with CodeIgniter
+1 per interessante la citazione di Active Record ... puoi modificare per includere un link? –