rogernem 0 Denunciar post Postado Setembro 29, 2009 Eu tenho as duas tabelas abaixo: Table1 -> eventos ----------------------------------- id_a day month year description 1 10 9 2009 test a 1 2 13 9 2009 test a 2 3 21 9 2009 test a 3 Table2 -> aniversarios ------------------------------------ id_b day month description 1 10 9 test b 1 2 15 9 test b 2 3 10 10 test b 3 4 10 11 test b 4 1) Se eu fizer: select c.id_a,c.day, n.id_b, n.day from table1 c, table2 n WHERE c.month=9 group by c.day,n.day order by c.day ASC, n.day ASC resulta: id_a day id_b day 1 10 1 10 1 10 2 15 2 13 1 10 2 13 2 15 3 21 1 10 3 21 2 15 2) Se tentar: SELECT c.id_a, c.day, n.id_b, n.day FROM table1 c INNER JOIN table2 n ON n.month=c.month ORDER BY c.day, n.day resulta: id_a day id_b day 1 10 1 10 1 10 2 15 2 13 1 10 2 13 2 15 3 21 1 10 3 21 2 15 3) E se tentar: select c.day, n.day from table1 as c INNER JOIN table2 as n ON c.month = n.month retorna: day day 10 10 13 10 21 10 10 15 13 15 21 15 Ta tudo repetido. Eu queria algo assim: ids days 1 10 2 13 3 21 1 10 2 15 um abaixo do outro sendo que os 3 dados acima vem da table1 e os 2 dados abaixo da table2. Como consigo fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Setembro 29, 2009 Na verdade, este comportamento é o esperado. Você que não compreendeu o comportamento do INNER JOIN. Da forma em que estão os dados, cada registro da tabela1 está fazendo a junção com cada um igual na tabela2, e você tem 3 registros 9 na tabela 1 e 2 na tabela2. Por isso duplica. O resultado que você deseja esta estranho. Afinal, você quer um join ou um union? Compartilhar este post Link para o post Compartilhar em outros sites