Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rogernem

Innerjoin nao esta funcionando 100%

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.