Ho due tabelle: gemme e gemdetail che sono rimaste unite. Sto provando a limitare il LEFT JOIN a 10 record nella tabella delle gemme. Ci sono altre 2 tabelle unite (gemreply e utenti), ma non contribuiscono al problema. Quanto segue non funziona:Limita a sinistra Partecipa al primo tavolo
SELECT gems.gemid, gems.title, r.tot, gemdetail.filename FROM ((gems
LEFT JOIN (SELECT gemid, COUNT(*) AS tot FROM gemreply GROUP BY gemid) AS r ON gems.gemid = r.gemid)
LEFT JOIN gemdetail ON gems.gemid = gemdetail.gemid)
LEFT JOIN users ON gems.userid = users.userid
WHERE gems.grade = '7' ORDER BY gems.gemid LIMIT 0, 10;
Questo limita il numero totale di righe restituite a 10, ma poiché ci sono più record di dettaglio per ogni gemma, io sono rimasto con meno di 10 record gemma. Ho letto ogni post "LIMIT", ma non ho trovato questa situazione.
UPDATE 1: OK - grazie a jviladrich - ha funzionato. Ecco il codice:
SELECT gems.gemid, gems.title, r.tot, gemdetail.filename
FROM ((gems
INNER JOIN (SELECT gems.gemid from gems WHERE gems.grade = '7' ORDER BY gems.gemid LIMIT 0, 10) g
ON (gems.gemid = g.gemid)
LEFT JOIN (SELECT gemid, COUNT(*) AS tot FROM gemreply GROUP BY gemid) AS r ON gems.gemid = r.gemid)
LEFT JOIN gemdetail ON gems.gemid = gemdetail.gemid)
LEFT JOIN users ON gems.userid = users.userid ;
UPDATE 2: Il codice da yogeshr sotto funziona anche - probabilmente quella andrò con. Grazie a tutti e due!
Spostare il limite all'interno della sottoquery? – Ben
Questa versione di MySQL non supporta ancora "LIMIT e IN/TUTTI/QUALSIASI/QUALCHE sottochera" è ciò che accade all'interno di una query secondaria. – mseifert
Ok, quindi vuoi il record delle prime 10 gemme e tutti i loro dettagli e poi unisciti a LEFT-join con gemreply e utenti? – Rachcha