Ricevo i duplicati quando eseguo due JOIN SINISTRO per ottenere il "nome_evento" nel mio esempio di seguito. Ottengo 112 casi con esso impostato in questo modo. Tuttavia, se mi sbarazzo delle 2 linee LEFT JOIN ed eseguo la query, ottengo i 100 record corretti senza duplicati. Ho provato DISTINCT con il codice qui sotto, ma ottengo ancora il 112 con i duplicati.Come evitare i duplicati nella query sql su tre tabelle unite
SELECT "cases"."id", "cases"."date", "cases"."name", "event"."event_name"
FROM "cases"
LEFT JOIN "middle_table" ON "cases"."serial" = "middle_table"."m_serial"
LEFT JOIN "event" ON "middle_table"."e_serial" = "event"."ev_serial"
WHERE "cases"."date" BETWEEN '2012-12-11' AND '2012-12-13'
Come faccio a specificare che io voglio solo le esatte 100 casi di "casi", e che io non voglio niente dalle tabelle in join di produrre qualsiasi più righe?
Grazie!
Come vengono tabelle correlate? 1: N da 'cases' a' middle_table'? Potresti parlarci un po 'di questo? –
potresti fornire alcuni testdata? [sql-fiddle] (http://www.sqlfiddle.com) è perfetto per questo. – Nico
Nel mio caso, stavo ottenendo duplicati a causa dell'adesione a un join uno-a-molti.L'unica soluzione che ho trovato è stata l'utilizzo di sottoquery. A ha molti Bs. B ha molte C e molti D. D ha molti Es e molte F. Avevo bisogno di recuperare tutti i Bs (che corrispondono a una stringa di ricerca), mentre aggregavo anche tutti i relativi C, Es e F per ogni corrispondenza. Ho usato un outer join per ottenere l'ABC, quindi ho usato due sottoquery per aggregare DE e DF. – bambams