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

Consulta a tablas múltiples con varias condiciones

Estas en el tema de Consulta a tablas múltiples con varias condiciones en el foro de Mysql en Foros del Web. Hola amigos, Necesito un poco de su ayuda y orientación... les comento: Tengo una base de datos compuesta com 5 tablas; 1° Usuarios: en donde ...
  #1 (permalink)  
Antiguo 13/11/2012, 16:25
 
Fecha de Ingreso: diciembre-2011
Mensajes: 90
Antigüedad: 12 años, 3 meses
Puntos: 0
Consulta a tablas múltiples con varias condiciones

Hola amigos,

Necesito un poco de su ayuda y orientación... les comento:
Tengo una base de datos compuesta com 5 tablas;

1° Usuarios: en donde guardo correo electronico, contraseña y provilegios
2° Datos generales: en los la cual tengo toda la informacion general que proporciona la persona al registrarse
3° las otras 3 son información especifica de algun sector alque se dedique la persona en su puesto.

mi regunta es... ¿Se puede hacer una consulta en la cual se pueda hacer un SELECT convinando la informacion que esta en las 5 tablas?... por ejemplo que haga una busqueda en las tres tablas de forma simultanea pero con condiciones, y que estas condiciones sean variables procedentes de un formulario?

por ejemplo quiero que busque en correo "[email protected]" (de la tabla de usuarios) pero que a la vez sea del Distrito Federal (de la tabla de Datos Generales) y que tambien tenga 10 de calificacion en el sector Alimentos (tabla 3)....

Espero se entienda mi idea, y me puedan echar una mano voy comenzando en mysql!
Saludos
  #2 (permalink)  
Antiguo 13/11/2012, 17:27
Avatar de zeliq  
Fecha de Ingreso: noviembre-2012
Ubicación: Barcelona
Mensajes: 17
Antigüedad: 11 años, 4 meses
Puntos: 3
Respuesta: Consulta a tablas múltiples con varias condiciones

Para consultar varias tablas a la vez, JOIN.

Para consultar con varias condiciones a la vez, WHERE con AND/OR

Que las variables procedan de un formulario o no ya es cosa del lenguaje de programación que utilices.
  #3 (permalink)  
Antiguo 13/11/2012, 19:07
 
Fecha de Ingreso: diciembre-2011
Mensajes: 90
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Consulta a tablas múltiples con varias condiciones

muchas gracias por contestar zeliq, creo que ya tengo algo y si me estan funcionando mis pruebas... solo tengo una duda; en las condiciones, por que no me da resultados cuando busco un parametro de la tabla 3 'AUTOMOTRIZ' te comparto mi codigo...
Código SQL:
Ver original
  1. SELECT
  2. Usuario.correo,
  3. Proveedor_DG.FechaRegistro,
  4. Proveedor_DG.Empresa,
  5. Proveedor_DG.Web,
  6. Proveedor_DG.Nombre,
  7. Proveedor_DG.Apellidos,
  8. Proveedor_DG.Cargo,
  9. Proveedor_DG.Lada,
  10. Proveedor_DG.Tel1,
  11. Proveedor_DG.RFC,
  12. Proveedor_DG.NombreDirector,
  13. Proveedor_DG.Direccion,
  14. Proveedor_DG.Estado,
  15. Proveedor_DG.Municipio,
  16. Proveedor_DG.CP,
  17. Proveedor_DG.Constitucion,
  18. Proveedor_DG.Empleados,
  19. Proveedor_DG.Web,
  20. Proveedor_DG.Bilingue,
  21. Proveedor_DG.Diseno,
  22. Proveedor_DG.Capacidad,
  23. Proveedor_DG.Ventas,
  24. Proveedor_DG.Automotriz,
  25. Proveedor_DG.MM,
  26. Proveedor_DG.Electrico,
  27. Proveedor_DG.Electronico,
  28. Proveedor_DG.Plasticos,
  29. Proveedor_DG.Aeroespacial,
  30. Proveedor_DG.TIC,
  31. Proveedor_DG.DM,
  32. Proveedor_DG.Indirectos,
  33. Proveedor_DG.Otro,
  34. Proveedor_DG.A2,
  35. Proveedor_DG.MM2,
  36. Proveedor_DG.E2,
  37. Proveedor_DG.El2,
  38. Proveedor_DG.Ae2,
  39. Proveedor_DG.P2,
  40. Proveedor_DG.T2,
  41. Proveedor_DG.DM2,
  42. Proveedor_DG.I2,
  43. Proveedor_DG.O2,
  44. Proveedor_DG.Provintern,
  45. Proveedor_DG.ClientesMexico,
  46. Proveedor_DG.ClientesExtranjero,
  47. Proveedor_DG.spc,
  48. Proveedor_DG.lm,
  49. Proveedor_DG.k,
  50. Proveedor_DG.ss,
  51. Proveedor_DG.cs,
  52. Proveedor_DG.SistemaCalidad,
  53. Proveedor_DG.ISO9000,
  54. Proveedor_DG.ISO20000,
  55. Proveedor_DG.ISO14000,
  56. Proveedor_DG.OSHA,
  57. Proveedor_DG.Informacion,
  58. Proveedor_DG.Descripcion,
  59. Proveedor_DG.Ventas_mundiales,
  60. Proveedor_DG.Pais,
  61. Proveedor_DG.Presencia_mundial,    
  62. Proveedor_DG.Comentarios,
  63. Proveedor_DG.Web_mundial,
  64. Automotriz.Id_empresa,
  65. Automotriz.ProductosEspanol,
  66. Automotriz.ProductosIngles
  67. FROM
  68. Usuario,
  69. Proveedor_DG,
  70. Automotriz
  71. WHERE
  72. (
  73. Proveedor_DG.Id_usuario=Usuario.Id AND
  74. Proveedor_DG.Id=Automotriz.Id_empresa AND
  75. Usuario.correo='%$correo%' AND
  76. Automotriz.ProductosEspanol='TORNILLOS'
  77. )
Espero se entienda mi duda!

Última edición por gnzsoloyo; 13/11/2012 a las 19:19 Razón: No se permite código de programación en los foros de BBDD.
  #4 (permalink)  
Antiguo 13/11/2012, 19:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta a tablas múltiples con varias condiciones

Cita:
por que no me da resultados cuando busco un parametro de la tabla 3 'AUTOMOTRIZ'
Porque en realidad tienes cuatro (4) parámetros y Los cuatro se deben cumplir al mismo tiempo. Si uno de ellos no se cumple, no devolverá datos.
Además, estás haciendo JOINs implícitos, los cuales pueden generar errores en los resultados.
Es preferible usar JOINs explícitos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 14/11/2012, 10:35
 
Fecha de Ingreso: diciembre-2011
Mensajes: 90
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Consulta a tablas múltiples con varias condiciones

gnzsoloyo muchas gracias por tu tiempo, mira la verdad soy nuevo en esto de los JOIN pero por lo que leí la forma Explicita del Join deberia de ser INNER JOIN en ves de usar la ','

ahora, el detalle es que hago una busqueda haciendo una condicion por cada atributo de las tablas, osea, si tengo 20 atributos en mi prmer tabla hago 20 'AND' dentro del WHERE y asi para las 5 tablas, pero algunos de las variables que uso como condiciones vienen vacios, ya que los usuarios hacen consultas con solo 2 paramentros de los 30 posibles... esto si es podible con el INNER JOIN?

agradezco mucho su orientacion y apoyo
  #6 (permalink)  
Antiguo 14/11/2012, 10:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta a tablas múltiples con varias condiciones

Cita:
pero algunos de las variables que uso como condiciones vienen vacios, ya que los usuarios hacen consultas con solo 2 paramentros de los 30 posibles...
En ese caso hay que resolver el problema en la aplicación, donde vas validando los datos que no entraron, y por cada dato ingresado le vas agregando al WHERE la condición de búsqueda adecuada, y si no se ingresó, no se le pone.
De ese modo la sentencia se crea como string sólo con aquellos parámetros que el usuario ingresó, y por tanto no aparecerán en la consulta las demás.
Este tipo de construcción dinámica de una sentencia es ajena a este foro, porque son cosas que haces en la programación. La gente de los foros de programación que trabaja con base de datos lo hace constantemente, por lo que te recomiendo preguntar allí (o usar el buscador de ese foro), para ver ejemplos de cómo se hace.
Si quieres, puedo moverte el post para ese foro, si me dices en qué trabajas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 14/11/2012, 12:39
Avatar de zeliq  
Fecha de Ingreso: noviembre-2012
Ubicación: Barcelona
Mensajes: 17
Antigüedad: 11 años, 4 meses
Puntos: 3
Respuesta: Consulta a tablas múltiples con varias condiciones

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Además, estás haciendo JOINs implícitos, los cuales pueden generar errores en los resultados.
gnzsoloyo,

En mi experiencia, con un join explícito puedes controlar mejor el resultado, pero nunca me he encontrado con errores en los resultados. ¿En qué casos se producen?
  #8 (permalink)  
Antiguo 14/11/2012, 13:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta a tablas múltiples con varias condiciones

Cuando usas los mismos nombres en campos no relacionados, o bien no existen nombres relacionables.
El problema fundamental es que un JOIN implícito requiere que se lean las tablas antes de aplicar las condiciones del WHERE y que además los campos relacionados tengan el mismo nombre en ambas tablas, donde estás declarando las relaciones, y eso implica desperdicio de bloques de lectura inicial (acceso a disco innecesario), mientras que los explícitos usan los indices de las FK y por tanto sólo leen lo relacionado.
En esencia, cuando usan nombres de FK que no son iguales a las PK de origen, suelen generar un producto cartesiano en la lectura, lo que es calamitoso.
Por eso es posible que se generen errores en la lectura inicial, que luego se depuran en el WHERE, pero si el WHERE está mal definido...
Imaginate los resultados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 14/11/2012, 13:16
 
Fecha de Ingreso: diciembre-2011
Mensajes: 90
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Consulta a tablas múltiples con varias condiciones

Si, así lo pensé después, condicionar los parámetros de búsqueda para que únicamente realice la consulta con las que el usuario envíe, agradezco tu ayuda y te comento, estoy trabajando en un directorio, pero los “analistas de la información” hacen búsquedas dependiendo de sus necesidades y la información que les interese y por la estructura que tiene la información que se solicita en el registro tuve que realizar 5 tablas y he tenido conflictos al relacionar la información de las mismas en la consulta, ya que soy novata en estos temas

Agradezco su ayuda, orientación y tiempo
  #10 (permalink)  
Antiguo 14/11/2012, 14:45
Avatar de zeliq  
Fecha de Ingreso: noviembre-2012
Ubicación: Barcelona
Mensajes: 17
Antigüedad: 11 años, 4 meses
Puntos: 3
Respuesta: Consulta a tablas múltiples con varias condiciones

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Cuando usas los mismos nombres en campos no relacionados, o bien no existen nombres relacionables.
El problema fundamental es que un JOIN implícito requiere que se lean las tablas antes de aplicar las condiciones del WHERE y que además los campos relacionados tengan el mismo nombre en ambas tablas, donde estás declarando las relaciones, y eso implica desperdicio de bloques de lectura inicial (acceso a disco innecesario), mientras que los explícitos usan los indices de las FK y por tanto sólo leen lo relacionado.
En esencia, cuando usan nombres de FK que no son iguales a las PK de origen, suelen generar un producto cartesiano en la lectura, lo que es calamitoso.
Por eso es posible que se generen errores en la lectura inicial, que luego se depuran en el WHERE, pero si el WHERE está mal definido...
Imaginate los resultados.
ya veo... gracias por tu explicación.

Etiquetas: condiciones, select, sql, tabla, tablas
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 22:40.