Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Excluir valores iguales

Estas en el tema de Excluir valores iguales en el foro de Mysql en Foros del Web. POR FAVOR SOLICITU AYUDA AYUDA EN LA ULTIMA PARTE DE ESTE PROBLEMA quem me ayuda es de vida o muerte Me ponen este problema liste ...
  #1 (permalink)  
Antiguo 26/09/2012, 15:17
 
Fecha de Ingreso: septiembre-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Excluir valores iguales

POR FAVOR SOLICITU AYUDA AYUDA EN LA ULTIMA PARTE DE ESTE PROBLEMA

quem me ayuda es de vida o muerte


Me ponen este problema liste el nombre de los empleados que trabajan en el departamento de investigación, que están ubicados en la ciudad de sacramento y que están ligado al proyecto "productoy" y que trabajen mas de 9 horas y que no tengas dependientes.

ya ise todo hasta lo de 9 horas

SELECT DISTINCT e.nombrep
FROM empleado e, departamento t, lugares_deptos lu, proyecto pr, trabaja_en tr, dependiente de
WHERE t.nombred="investigacion" AND lu.lugard="sacramento" AND pr.nombrep= "productoy" AND tr.horas> 9


La cosa asi es

Ahi 2 Tablas una llamada "empleado" y otra llamada dependiente

captura de la tabla empleado.


Captura de la tabla dependiente


Como puede ver se puede asociar la llave primaria de empleados es "nss" y la llave primaria de dependiente es "nsse"

la parte que me falta del codigo es "y que no tengas dependientes."

quien me puede ayudar con este pedaso por favor
  #2 (permalink)  
Antiguo 26/09/2012, 15:42
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Excluir valores iguales

Hola EduardoREO:

tengo algunas observaciones que hacer a tu post:

1. Estás cometiendo un error muy grave, pues no estás colocando ninguna condición de unión entre tus tablas, por lo tanto se realizará UN PRODUCTO CARTESIANO entre cada PAR de ellas. Además no es recomendable que listes las tablas el el FROM... te recomiendo el uso de JOIN's con su cláusula ON correspondiente:

Código MySQL:
Ver original
  1. mysql> select * from tablaA;
  2. +------+-------------+
  3. | id   | descripcion |
  4. +------+-------------+
  5. |    1 | uno         |
  6. |    2 | dos         |
  7. |    3 | tres        |
  8. +------+-------------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> select * from tablaB;
  12. +------+-------------+
  13. | id   | descripcion |
  14. +------+-------------+
  15. |    1 | one         |
  16. |    2 | two         |
  17. |    3 | three       |
  18. +------+-------------+
  19. 3 rows in set (0.00 sec)
  20.  
  21.  
  22. mysql> SELECT * FROM tablaA, tablaB
  23.     -> WHERE tablaA.id = 1;
  24. +------+-------------+------+-------------+
  25. | id   | descripcion | id   | descripcion |
  26. +------+-------------+------+-------------+
  27. |    1 | uno         |    1 | one         |
  28. |    1 | uno         |    2 | two         |
  29. |    1 | uno         |    3 | three       |
  30. +------+-------------+------+-------------+
  31. 3 rows in set (0.00 sec)
  32.  
  33. mysql> SELECT * FROM tablaA
  34.     -> INNER JOIN tablaB ON TablaA.id = TablaB.id
  35.     -> WHERE tablaA.id = 1;
  36. +------+-------------+------+-------------+
  37. | id   | descripcion | id   | descripcion |
  38. +------+-------------+------+-------------+
  39. |    1 | uno         |    1 | one         |
  40. +------+-------------+------+-------------+
  41. 1 row in set (0.00 sec)

La parte que no tienes en tu consulta es justamente el ON

Código:
ON TablaA.id = TablaB.id
2. Para la última parte tienes tres opciones: utilizar NOT IN, utilizar NOT EXISTS o utilizar un LEFT JOIN... investiga un poco acerca de como se utiliza cada una de estas. Si tienes problemas dinos qué es lo que intentaste hacer y con gusto te ayudamos a afinar la consulta.

Saludos
Leo.
  #3 (permalink)  
Antiguo 26/09/2012, 22:02
 
Fecha de Ingreso: septiembre-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Excluir valores iguales

perdona mi ingnoracia amigo es apenas me estan enseñando y entiendo a medias

por favor me ayudas que lineas tengo que corregir y como agrego las ultimas lineas para que no me muestre los repetidos de la tabla de dependiente
  #4 (permalink)  
Antiguo 27/09/2012, 07:58
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Excluir valores iguales

Hola de nuevo EduardoREO:

Veo que apenas comenzaste a usar el foro, pues es apenas tu segundo mensaje, así es que algunas consideraciones.

Primero, no esperes encontrar en el foro una respuesta solo para copiar y pegar. La idea del foro es ayudarte a que resuelvas por tu cuentas tus consultas o en su defecto darte algún comentario o alternativa para hacerlo, pero el que tiene que hacer el trabajo eres tu... en mi post te mencioné que la consulta se puede hacer de tres maneras distintas, con NOT IN, con NOT EXISTS y con un LEFT JOIN, la idea es que investigaras por tu cuenta cómo se implementan cada una de ellas y que eligieras la que más se adecua a tus necesidades. Es por eso que te decía, que si continuabas con problemas nos dijeras qué es lo que habías intentado hacer y a partir de ahí te ayudábamos a corregir lo que fuera necesario.

En cuanto a las líneas que tienes que corregir, te lo mencioné en el post, pero va de nuevo la explicación, hay dos maneras de relacionar dos tablas, una sería listándolas en el FROM separadas por comas (como lo estás haciendo) y otra sería con JOIN'S, la cual recomiendo ampliamente.

Código:
....
FROM TablaA, TablaB 
WHERE tablaA.campo = tablaB.campo 
AND tablaA.otroCampo = 1
....


...
FROM TablaA
INNER JOIN TablaB ON TablaA.campo = TablaB.campo
WHERE TablaA.otroCampo = 1
.......
Observa la parte con rojo, es justamente la parte que no tienes en tu consulta, ya que en el WHERE NO ESTÁS PONIENDO NINGUNA RELACIÓN ENTRE TUS TABLAS, sólo estás colocando criterios para filtrar la información:

Código:
...
FROM 
  empleado e, 
  departamento t, 
  lugares_deptos lu, 
  proyecto pr, 
  trabaja_en tr, 
  dependiente de
WHERE 
  t.nombred="investigacion" AND 
  lu.lugard="sacramento" AND 
  pr.nombrep= "productoy" AND 
  tr.horas> 9 
..

Segundo, mencionas que apenas te están enseñando, esto quiere decir que eres un estudiante... es muy importante para que aprendas que leas la teoría pero sobre todo que practiques todas las lecciones... esa es la verdadera naturaleza de las tareas o deberes. Si no practicas y te enfrentas con los problemas típicos de alguien que apenas va comenzando nunca terminarás por aprender.

Tercero, San Google, Santa Wikipedia, San Yahoo y muchos otros, son muy sabios y tienen muchísimas respuestas, es conveniente que te acerques a ellos a elevar tus plegarias y ha solicitar consejo... sólo si no encuentras respuesta, entonces si puedes acudir al foro a expresar tus problemas.

Tienes que entender que los que participamos en el foro no estamos para hacer el trabajo de otros, pero que estamos dispuestos a ayudar en lo que podamos.

Saludos
Leo.

Etiquetas: excluir, iguales, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:10.