Actualmente estoy tratando de hacer aparecer varios números de teléfono en NetBeans, pero parece que la consulta SQL para mi base de datos está lejos de ser perfecta. Siempre me dice: varias filas en singleton select.
El código me permite obtener un número si solo pertenece a una persona, sin embargo, hay un número que pertenece a tres personas, y necesito que aparezcan todos esos tres. ¡Gracias por adelantado!
String telephoneQuery3 = "select * from HAS_COMPETENCE where aid = (select aid from EMPLOYEE where telephone = "" + telephone + "")";
Respuestas
0 para la respuesta № 1Tu estas usando =
cuando deberías usar in
:
select *
from HAS_COMPETENCE hc
where hc.aid in (select e.aid from EMPLOYEE e where e.telephone = "" + telephone + "")
El problema es que la subconsulta devuelve más de un valor. Con =
, el motor solo espera un valor. los in
corrige esto por lo que espera una lista de valores.
También agregué alias de tabla a la consulta. Esto identifica de qué tablas provienen los campos, para evitar confusión para alguien que mira la consulta.
0 para la respuesta № 2
Comparado con =
solo funciona si la expresión a su derecha devuelve una fila, uso insetad IN
select * from HAS_COMPETENCE where aid IN (select aid from EMPLOYEE where telephone = "" + telephone + "")";