Atualmente, estou tentando fazer com que vários números de telefone apareçam no NetBeans, mas parece que a consulta SQL para meu banco de dados está longe de ser perfeita. Ele sempre me diz: Várias linhas no singleton select.
O código permite que eu obtenha um número se pertencer a apenas uma pessoa; no entanto, existe um número que pertence a três pessoas, e eu preciso que todos esses três apareçam. Desde já, obrigado!
String telephoneQuery3 = "select * from HAS_COMPETENCE where aid = (select aid from EMPLOYEE where telephone = "" + telephone + "")";
Respostas:
0 para resposta № 1Você está usando =
quando você deveria usar in
:
select *
from HAS_COMPETENCE hc
where hc.aid in (select e.aid from EMPLOYEE e where e.telephone = "" + telephone + "")
O problema é que a subconsulta está retornando mais de um valor. Com =
, o mecanismo espera apenas um valor. o in
corrige isso para esperar uma lista de valores.
Também adicionei alias de tabela à consulta. Isso identifica de quais tabelas os campos são provenientes - para evitar confusão para quem olha a consulta.
0 para resposta № 2
Em comparação com =
só funciona se a expressão à direita retornar uma linha, de acordo com o uso IN
select * from HAS_COMPETENCE where aid IN (select aid from EMPLOYEE where telephone = "" + telephone + "")";