Je ne suis pas sûr que ce soit la bonne approche, voici ma situation:mysql - sous-requêtes et rejoint
J'essaie actuellement de sélectionner 15 galeries, puis à gauche le rejoindre à la table d'utilisateur à travers le id mais je veux aussi sélectionner une image aléatoire de chaque galerie cependant de ce que je sais que vous ne pouvez pas limiter la jointure gauche (image) pour ne prendre qu'une image aléatoire sans faire de sous-requête.
Voici ce que je suis arrivé à ce jour, mais sa ne fonctionne pas comme il se doit:
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
J'ai aussi essayé de le faire avec Active Record mais je suis coincé après avoir fait deux à gauche rejoint, est-il possible pour faire obtenir un sous-requête ici:
$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);
J'espère que ce pas compliqué, mais je commence vraiment à être embrouillé par toutes les requêtes sQL ..
Edit: Active Record with CodeIgniter
+1 pour une citation intéressante de Active Record ... pourriez-vous s'il vous plaît modifier pour inclure un lien? –