Estou com um probleminha que esta me tirando o sono.
Tenho 2 tabelas com 3 campos cada que preciso retornar ao sistema, mas ambas possuem campos com o mesmo nome.
exemplo
TABA (ID_A, Titulo, Tipo) com 22 registros
TABB (ID_B, Titulo, Tipo) com 59 registros
Com o código:
SELECT ID_A, A.Titulo, A.Tipo, ID_B, B.Titulo, B.Tipo
FROM TABA A, TABB B
WHERE A.ID_Registro=<variável do registro X> and A.ID_Registro=B.ID_Registro
ORDER BY A.Tipo, A.ID_A, B.Tipo, B_ID_B;
o retorno não é o que sei existir nas tabelas, se fizer a consulta separada teria 81 registros ao todo contra os mil que retornam nas duas juntas!!!
Alguém sabe o porque e como resolver?
Fiquei um pouco confuso com a tua dúvida.
Qual a relação entre estas tabelas? O que queres retornar delas? De repente, pode estar te faltando usar o alias, só.
tente assim
SELECT ID_A, A.Titulo as TITULOA, A.Tipo as TIPOA, ID_B, B.Titulo as TITULOB, B.Tipo as TIPOB
FROM TABA A, TABB B
WHERE A.ID_Registro=<variável do registro X> and A.ID_Registro=B.ID_Registro
ORDER BY tipoa, A.ID_A, tipob, B_ID_B;
assim vai…
B.ID_Registro é foreign key de A.ID_Registro? se sim, tente um left join:
select Id_A
, A.Titulo
, A.Tipo
, Id_B
, B.Titulo
, B.Tipo
from TabA A
left join TabB B
on A.ID_Registro = B.ID_Registro
where A.ID_Registro=<variável do registro X>
order by A.Tipo
, A.Id_A
, B.Tipo
, B.Id_B;
o código que passou ainda retorna mais de mil linhas
Achei interessante dar apelidos para as colunas!
A questão é que o “tipo” é a chave primaria e não tem FK para o “id_registro”.
ID_Registro é um registro comum as duas que não são relacionadas!
Bom não sei o que é Union?
O banco é MySQL e uso o MySQL_QueryBrowser para testar os códigos antes de incluir no sistema.