SQL - consulta inner??

 
Vista:

consulta inner??

Publicado por Daniel (13 intervenciones) el 19/08/2004 18:39:24
Hola a todos y de antemano gracias tengo 2 tablas t1 contiene a mis empleados y t2 la ocupo para caprurar su asistencia. necesito hacer una consulta que me regrese a los empleados que no tienen asistencia ese dia ya lo intente de las siguientes formas pero no corre porfavor ayudenme.

rs=st.executeQuery("SELECT * FROM empleado where cod_emp not exists and stado=0 (select co_em FROM asistencia where deacap='"+lblFeaCap2.getText()+"' and empleado.cod_emp = asistencia.co_em)");

rs=st.executeQuery("Select * from empleado WHERE status=0 MINUS Select co_em from asistencia where stado='"+lblFeaCap2.getText()+"'");

e intentado con una consulta inner join pero no se como se hace, lo hago de la siguiente formapero no sale.

rs=st.executeQuery("SELECT empleado.* FROM empleado LEFT JOIN asistencia ON empleado.cod_emp <> asistencia.co_em WHERE cod_emp IS NULL and asistencia.deacap1="+lblFeaCap2.getText()+"'");
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta inner??

Publicado por blacky_dy (11 intervenciones) el 19/08/2004 19:16:09
prueba asi:

Select *
from empleados
where not exist( select * from asistencia where asistencia.cod_Emp = empleados.cod_emp and fechaAsistencia = tucampo )

me falta un dato en la consulta, que es la fecha de asistencia que estas consultando.

Ahora si quieres usar el join lo debes hacer con rigth outer join porque necesitas todos los campos del left( izquierda ya que la primera tabla es empleados ) queno existan en el rith( derecha, que en este caso es la tabla de asistencia )

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta inner??

Publicado por Isaías Islas (5072 intervenciones) el 19/08/2004 19:45:28
Daniel

Dudo mucho que tu consulta funcione, ya que el NOT IN, debe hacer referencia a un campo en especifico.

Autor: blacky_dy [email protected]
Fecha: 19/08/2004 19:16:09
Asunto: RE:consulta inner??
prueba asi:

Select *
from empleados
where MYCOLUMNA not exist( select MYCOLUMNA from asistencia where asistencia.cod_Emp = empleados.cod_emp and fechaAsistencia = tucampo )

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta inner??

Publicado por Isaías (5072 intervenciones) el 19/08/2004 19:47:36
Sorry, la observacion es para BLACKY_DY
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias

Publicado por Daniel (13 intervenciones) el 19/08/2004 20:33:31
en verdad les agradesco la molestia que tomaron para ayudarme pero me temo que de ninguna de las 2 formas funciona, la consulta queda asi pero nada, me marca error al leer en la db

rs=st.executeQuery("SELECT * FROM empleado WHERE cod_emp not exist( SELECT * FROM asistencia WHERE asistencia.co_em = empleado.cod_emp and deacap='"+lblFeaCap2.getText()+"' and empleado.stado=0");

uso mysql 4 y java eso tiene algo que ver??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias

Publicado por blacky_dy (11 intervenciones) el 19/08/2004 21:28:11
Pruebala sacando el campo y ojo cod emp estaba mal escrito ademas la condicion del estado debe ir fuera del not exist y decap debe llevar el prefiijo para no confundirnos. Que quede asi:

rs=st.executeQuery("
SELECT *
FROM empleado
WHERE not exist( SELECT *
FROM asistencia
WHERE asistencia.cod_emp = empleado.cod_emp _______________and asistencia.deacap='"+lblFeaCap2.getText()+"' ) and empleado.stado=0" ;

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta inner??

Publicado por blacky_dy (11 intervenciones) el 19/08/2004 21:23:34
Hombre de poca fe, Pruebala y veremos si funciona :D ....

Cuando consultas por el not exist no importa el campo porque lo estas esperando como respuesta es si el select devolvio registros. Ademas dentro de la comparacion del select para hacer el join manual esty usando el campo cod_emp que es la relacion entre las 2 tablas.

Salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta inner??

Publicado por Daniel (13 intervenciones) el 19/08/2004 23:06:18
eso a dolido mi estimado blacky_dy, "lo de poca fe" en verdad ya puse las consultas de varias formas y nada

la primera es la unica que funciona pero las demas nada, tabien he omitido el comparar el empleado.stado pero nada pasa, sera algun problema con la estructura de DB, o los index?? o tienes alguna sugerencia?? o el problema es mi cabeza dura??

saludos

rs=st.executeQuery("SELECT * FROM empleado WHERE stado=0 and lu='"+sucursal+"'");

rs=st.executeQuery("SELECT * FROM empleado WHERE not exist( SELECT * FROM asistencia WHERE asistencia.co_em = empleado.cod_emp and deacap='"+lblFeaCap2.getText()+"') and empleado.stado=0" );

rs=st.executeQuery("SELECT * FROM empleado WHERE not exixt(SELECT * FROM asistencia WHERE asistencia.co_em = empleado.cod_emp and asistencia.deacap='"+lblFeaCap2.getText()+"')");

rs=st.executeQuery("SELECT * FROM empleado where cod_emp not exists and status=0 (select co_em FROM asistencia where deacap='"+lblFeaCap2.getText()+"' and empleado.cod_emp = asistencia.co_em)");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta inner??

Publicado por Isaías Islas (5072 intervenciones) el 20/08/2004 17:18:43
Hola

Nunca he manejado MySQL, pero no se me hace logico que el NOT IN no indique el Campo por el cual deseo comparar, finalmente es SQL y deberia codificarse con ANSI.

La sintaxis es:

WHERE mycol NOT IN(SELECT mycol FROM ............)

Donde "mycol" es la columna a comparar en el NOT IN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar