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

select multiples tablas(13 o mas...)

Estas en el tema de select multiples tablas(13 o mas...) en el foro de Mysql en Foros del Web. Hola, para estrenarme en esto de los foros les traigo el siguiente "problemilla"... Tengo una BD con las siguientes tablas: -clientes (tiene de llaves foraneas ...
  #1 (permalink)  
Antiguo 15/07/2010, 12:54
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
De acuerdo select multiples tablas(13 o mas...)

Hola, para estrenarme en esto de los foros les traigo el siguiente "problemilla"...
Tengo una BD con las siguientes tablas:

-clientes (tiene de llaves foraneas el idDomicilio_cliente y el idContacto_cliente)
-domicilio_cliente
-contacto_cliente


-empresas (tiene de llaves foraneas el idDomicilio_empresa y el idContacto_empresa)
-domicilio_empresa
-contacto_empresa

-comprobante (tiene de llaves foraneas clienteRFC y el empresaRFC)

-control_impuesto (tiene de llaves foraneas el idComprobante y el idImpuesto)
-impuestos (tiene de llaves foraneas el idRetencion y el idTraslado)
-retencion
-traslado


-control_concepto(tiene de llaves foraneas el idComprobante y el idConcepto)
-concepto

Todas estan relacionadas, como pueden ver...

Hago la siguiente consulta en php MyAdmin:

Código MySQL:
Ver original
  1. clientes,
  2. comprobante,
  3. concepto,
  4. contacto_cliente,
  5. contacto_empresa,
  6. control_concepto,
  7. control_impuesto,
  8. domicilio_cliente,
  9. domicilio_empresa,
  10. empresas,
  11. formade_pago,
  12. impuestos,
  13. retencion
  14.  
  15.  
  16. clientes.clienteRFC=comprobante.clienteRFC and
  17. clientes.idDomicilio_cliente=domicilio_cliente.idDomicilio_cliente and
  18. clientes.idContacto_cliente=contacto_cliente.idContacto_cliente and
  19.  
  20. control_concepto.idConcepto=concepto.idConcepto and
  21. control_concepto.idComprobante=comprobante.idComprobante and
  22.  
  23. comprobante.idComprobante=control_impuesto.idComprobante and
  24.  
  25. impuestos.idImpuesto=control_impuesto.idImpuesto and
  26. impuestos.idRetencion=retencion.idRetencion and
  27.  
  28. empresas.empresaRFC=comprobante.empresaRFC and
  29. empresas.idDomicilio_empresa=domicilio_empresa.idDomicilio_empresa and
  30. empresas.idContacto_empresa=contacto_empresa.idContacto_empresa
La consulta la realiza "bien", excepto xq me manda 4 resultados de esta consulta....y en la bd solo tengo un registro...

Se que la cuestion esta en que falta una clausula en la condicion "where" pero no se cual, me pueden decir cual es?

Última edición por punksh; 16/07/2010 a las 18:59
  #2 (permalink)  
Antiguo 15/07/2010, 13:57
Avatar de chicho_  
Fecha de Ingreso: julio-2010
Mensajes: 44
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: select multiples tablas(13 o mas...)

A simple vista se ven 13 tablas y 11 condiciones, con lo que está claro que debe haber un mínimo de 12 para conectarlas todas.

Te recomiendo el uso de INNER JOINS para unirlas y no tendrás estos problemas ya que irás uniendo las relaciones al momento, además que te quedará el WHERE libre para luego poner las condiciones y que no se te mezcle con las relaciones
  #3 (permalink)  
Antiguo 16/07/2010, 08:14
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: select multiples tablas(13 o mas...)

Cita:
Iniciado por chicho_ Ver Mensaje
A simple vista se ven 13 tablas y 11 condiciones, con lo que está claro que debe haber un mínimo de 12 para conectarlas todas.

Te recomiendo el uso de INNER JOINS para unirlas y no tendrás estos problemas ya que irás uniendo las relaciones al momento, además que te quedará el WHERE libre para luego poner las condiciones y que no se te mezcle con las relaciones
Gracias por tu respuesta...
efectivamente son 13 tablas pero si te fijas en mi consulta solo uso 12 (ya que o es "retencion" o es "traslado", pero nunca ambas... solo quise mostrar todas las tablas que tengo en mi bd)

He escuchado de los INNER JOINS y tambien he leido mucho sobre ellos pero jamas los he usado...

Como sea ya modifique mi consulta con la que ya obtengo lo que queria...

la publico por si a alguien le sirve o tiene un problema similar...

La solución a mi problema quedo de la siguiente manera:
Código MySQL:
Ver original
  1. clientes,
  2. domicilio_cliente,
  3. contacto_cliente,
  4. empresas,
  5. domicilio_empresa,
  6. contacto_empresa,
  7. concepto,
  8. comprobante,
  9. impuestos,
  10. retencion,
  11. control_impuesto,
  12. control_concepto
  13.  
  14.  
  15. domicilio_cliente.idDomicilio=clientes.idDomicilio and
  16. contacto_cliente.idContacto_cliente=clientes.idContacto_cliente and
  17. clientes.clienteRFC=comprobante.clienteRFC and
  18. domicilio_empresa.idDomicilio= empresas.idDomicilio and
  19. contacto_empresa.idContacto_empresa = empresas.idContacto_empresa and
  20. comprobante.idComprobante=control_concepto.idComprobante and
  21. concepto.idConcepto=control_concepto.idConcepto and
  22. comprobante.idComprobante=control_impuesto.idComprobante and
  23. retencion.idRetencion=impuestos.idRetencion and
  24. impuestos.idImpuesto=control_impuesto.idImpuesto

Última edición por punksh; 16/07/2010 a las 18:58
  #4 (permalink)  
Antiguo 16/07/2010, 17:37
 
Fecha de Ingreso: julio-2010
Mensajes: 1
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: select multiples tablas(13 o mas...)

Hola me gustaria saber si se resolvio tu tema es que yo tengo un problemita similar en el que quiero consultar de una base de datos de mysql informacion de dos tablas en una consulta...

mira mis base se llama

"principal"


y contiene las siguiemtes tablas

-dvcm1
-dvcm2


y cada uno tiene de estructura lo siguiente:


-id
-nombre
-razon_social


y me gustaria saber como consulto solo los nombres de ambas tablas?


espero alguna respuesta de ayuda muchas gracias
  #5 (permalink)  
Antiguo 16/07/2010, 18:52
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: select multiples tablas(13 o mas...)

Cita:
Iniciado por yaotzin_tech Ver Mensaje
Hola me gustaria saber si se resolvio tu tema es que yo tengo un problemita similar en el que quiero consultar de una base de datos de mysql informacion de dos tablas en una consulta...

mira mis base se llama

"principal"


y contiene las siguiemtes tablas

-dvcm1
-dvcm2


y cada uno tiene de estructura lo siguiente:


-id
-nombre
-razon_social


y me gustaria saber como consulto solo los nombres de ambas tablas?


espero alguna respuesta de ayuda muchas gracias
si, mi problema se resolvio...
Código MySQL:
Ver original
  1. clientes,
  2. domicilio_cliente,
  3. contacto_cliente,
  4. empresas,
  5. domicilio_empresa,
  6. contacto_empresa,
  7. concepto,
  8. comprobante,
  9. impuestos,
  10. retencion,
  11. control_impuesto,
  12. control_concepto
  13.  
  14.  
  15. domicilio_cliente.idDomicilio=clientes.idDomicilio and
  16. contacto_cliente.idContacto_cliente=clientes.idCon tacto_cliente and
  17. clientes.clienteRFC=comprobante.clienteRFC and
  18. domicilio_empresa.idDomicilio= empresas.idDomicilio and
  19. contacto_empresa.idContacto_empresa = empresas.idContacto_empresa and
  20. comprobante.idComprobante=control_concepto.idCompr obante and
  21. concepto.idConcepto=control_concepto.idConcepto and
  22. comprobante.idComprobante=control_impuesto.idCompr obante and
  23. retencion.idRetencion=impuestos.idRetencion and
  24. impuestos.idImpuesto=control_impuesto.idImpuesto

y la solucion para el tuyo es la siguiente:

Código MySQL:
Ver original
  1. select nombre from dvcm1,dvcm2




saludos!
  #6 (permalink)  
Antiguo 18/07/2010, 02:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: select multiples tablas(13 o mas...)

Hola me gustaria saber si se resolvio tu tema es que yo tengo un problemita similar en el que quiero consultar de una base de datos de mysql informacion de dos tablas en una consulta...

Cita:
mira mis base se llama

"principal"


y contiene las siguiemtes tablas

-dvcm1
-dvcm2


y cada uno tiene de estructura lo siguiente:


-id
-nombre
-razon_social


y me gustaria saber como consulto solo los nombres de ambas tablas?
Para lo segundo, creo que debes usar UNION ALL. Si quieres que cuando un nombre se repita sólo salga una vez, usa UNION en lugar de UNION ALL

Código MySQL:
Ver original
  1. (SELECT nombre FROM dvcm1)
  2. (SELECT nombre FROM dvcm2)
  3. ORDER BY nombre

Etiquetas: mas, multiples, select, 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 08:05.