Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Crarmon en 10 Febrero 2015, 07:11 am



Título: como hacer una consultar de 3 tablas
Publicado por: Crarmon en 10 Febrero 2015, 07:11 am
tengo 4 tabla   shop_customer(customer_id(pk),user_id,address_id)  la otra tabla es shop_order(order_id(pk), custtomer_id) y tengo shop_order_position(order_id,Id_producto,amount) y por ultimo usuario(id,rol)

ok mi pregunta es la siguiente tengo que hacer dos  consulta la primera es que

quiero ver los monto de los  producto por cada usuario que sea cliente por la diferentes  ordenes es decir si mi cliente en una orden llevo producto 1 y producto 2 entonces que me muestre la cantidad por lo producto que se llevo en esa orden
la segunda todos cantidades de producto por ordenes


Título: Re: como hacer una consultar de 3 tablas
Publicado por: Shell Root en 10 Febrero 2015, 13:12 pm
Código
  1. shop_customer(customer_id(pk), user_id, address_id);
  2. shop_order(order_id(pk), custtomer_id);
  3. shop_order_position(order_id, Id_producto, amount);
  4. usuario(id, rol);

Realizas un UNION tabla por tabla con su respectivo FOREIGN KEY, por ejemplo:
Código
  1. Usuario(uID(pk), nombre, apellido);
  2. TipoUsuario(uIDTipo, uIDUsuario, nombre);

Al realizar el UNION quedaría así:
Código
  1. SELECT Usu.uID, Usu.Nombre, Usu.Apellido, TipUsu.Nombre FROM Usuario Usu UNION TipoUsuario TipUsu ON TipUsu.uIDUsuario = Usu.uID

Motrara todos los usuarios con su respectivo tipo de usuario. Funciona de igual forma, con x cantidad de tablas, siempre y cuando se tenga una relación.


Título: Re: como hacer una consultar de 3 tablas
Publicado por: crisoof en 10 Febrero 2015, 14:09 pm
DEBERIAS SER UN POCO MAS CLARO CON TU PREGUNTA Y OJALA INDICAR LAS RELACIONES ENTRE LAS TABLAS, asi seria mucho mas facil para todos poder ayudar,

imaginare que las tablas se relacionan asi

Citar
shop_customer ---->shop_order
shop_order      ---->shop_order_position
shop_customer ---->usuario

asumiendo que las relaciones entre las tablas son esas, puedes hacer un join para enlazar las tablas entre si y obtener lo que necesitas
esto seria mas o menos asi
Código:
           SELECT U.NOMBRE, U.APELLIDO,SO.ORDER_ID, SOP.ID_PRODUCTO, SOP.AMOUNT
              FROM SHOP_CUSTOMER SC
      INNER JOIN SHOP_ORDER SO
                  ON SC.CUSTOMER_ID = SO.CUSTTOMER_ID ---CUSTTOMER_ID?? O CUSTOMER_ID, SEGURO FUE ERROR Y DEBERIA SER CUSTOMER_ID
      INNER JOIN SHOP_ORDER_POSITION SOP
                  ON SO.ORDER_ID = SOP.ORDER_ID
      INNER JOIN USUARIO U
                  ON SC.USER_ID = U.ID
 
LA SEGUNDA CON ESTE EJEMPLO TIENES PARA HACER LA SEGUNDA, aunque no se que tan bien lo resolví porque no lo pude probar y tu capacidad para explicar el problema es un poco mala, o quizás yo soy malo entendiendo

ESO O ENTENDI MAL?

Saludos


Título: Re: como hacer una consultar de 3 tablas
Publicado por: Crarmon en 10 Febrero 2015, 20:53 pm
http://i.imgur.com/DT5etcE.png aqui esta la imagen


Título: Re: como hacer una consultar de 3 tablas
Publicado por: Crarmon en 10 Febrero 2015, 21:01 pm
explico un usuario tienes varias ordenes que es la tabla shop_order, la ordenes tienen varios direccion de envio , compra y usuarios, ademas esa ordenes tienen posiciones que es la  tabla shop_order_position, es decir quiero saber la sumatoria por la cantidades de  producto de los usuarios cliente