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

Consulta a multiples tablas

Estas en el tema de Consulta a multiples tablas en el foro de Mysql en Foros del Web. Buenas, les hago una consulta sobre lo que estoy intentando hacer y no se bien como lograrlo. tengo varias tablas con iguales estructuras pero distintos ...
  #1 (permalink)  
Antiguo 19/03/2012, 22:11
 
Fecha de Ingreso: enero-2011
Mensajes: 41
Antigüedad: 13 años, 9 meses
Puntos: 0
Consulta a multiples tablas

Buenas, les hago una consulta sobre lo que estoy intentando hacer y no se bien como lograrlo.

tengo varias tablas con iguales estructuras pero distintos valores y necesito consultarlas en un mismo resultado, como por ejemplo:

Código PHP:
SELECT FROM mov_factura WHERE cod_cliente 'xxx' 
esto lo quiero combinar con el resultado de 2 o 3 tablas y ordenarlo por fecha, digamos que brutamente la consulta que quiero es esta:

Código PHP:
SELECT FROM mov_facturamov_ncmov_nd WHERE cod_cliente 'xxx' ORDER BY campofecha 
Esto no es correcto, ya que me tira "ambiguous", por tener el campo cod_cliente duplicado en todas las tablas, pero necesito obtenerlos en una sola consulta para poder ordenar los resultados y trabajar con ello.

gracias por la ayuda!
  #2 (permalink)  
Antiguo 20/03/2012, 09:52
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Consulta a multiples tablas

Hola freedert:

Hay varios detalles a considerar en tu consulta:

En primer lugar, al poner esto:

Código MySQL:
Ver original
  1. FROM mov_factura, mov_nc, mov_n

y no poner ninguna condición de unión en el where ESTÁS REALIZANDO EL PRODUCTO CARTESIANO entre tus tablas... además, no es recomendable utilizar esta forma de unión entre tablas, en lugar de hacer las uniones explícitas DEBES UTILIZAR LOS JOIN'S.

Código:
en lugar de esto:

FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo

hacer esto 

FROM tabla1 INNER JOIN tabla2 ON tabla1.campo, tabla2.campo
En segundo lugar... el error de "ambiguous": el DBMS no es adivino, sólo puede hacer algo que no implique decisiones (a menos que le digas el criterio para elegir), al existir el campo en cod_cliente en todas las tablas, ¿cuál de los tres es el que debería utilizar para ordenar los datos?... debes especificar de manera clara sobre cuál de los tres campos se debe realizar la ordenación, anteponiendo el nombre de la tabla a la que hace referencia.

Código:
 WHERE tabla1.campo = 'XXX' and tabla2.campo = 'YYY' 
ORDER BY tabla3.campo 
..................
De esta manera, no importa que el campo se repita en n tablas con el mismo nombre...

Mucho ojo... estos son conceptos básicos de Base de Datos... si apenas estás aprendiendo lee primero cualquier manual para principiantes, de lo contrario tendrás muchos dolores de cabeza.

Saludos
Leo.
  #3 (permalink)  
Antiguo 20/03/2012, 12:06
 
Fecha de Ingreso: enero-2011
Mensajes: 41
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Consulta a multiples tablas

Hola Leo, gracias por la respuesta, bueno investigue un poco y entendí lo que me ilustraste, igualmente no consigo el resultado que quiero, pero antes de seguir voy a estudiarme algún manual de mysql y luego cualquier cosa te comento los resultados.

Lo que sucede es que aprendí los lenguajes que uso el año pasado y nunca tuve problemas con consultas simples, pero ahora lo que estoy haciendo supera el poco tiempo que le dedique al aprendizaje de mysql, creo que llego la hora de invertir algo de tiempo en esta paltaforma.

Gracias!

Etiquetas: multiples, select, tabla, tablas, campos
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 18:37.