como hacer una consultar de 3 tablas

Iniciado por Crarmon, 10 Febrero 2015, 07:11 AM

0 Miembros y 1 Visitante están viendo este tema.

Crarmon

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

Shell Root

Código (sql) [Seleccionar]
shop_customer(customer_id(pk), user_id, address_id);
shop_order(order_id(pk), custtomer_id);
shop_order_position(order_id, Id_producto, amount);
usuario(id, rol);


Realizas un UNION tabla por tabla con su respectivo FOREIGN KEY, por ejemplo:
Código (sql) [Seleccionar]
Usuario(uID(pk), nombre, apellido);
TipoUsuario(uIDTipo, uIDUsuario, nombre);


Al realizar el UNION quedaría así:
Código (sql) [Seleccionar]
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.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

crisoof

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

           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


Crarmon

#4
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