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

Duda consulta 3 tablas mysql

Estas en el tema de Duda consulta 3 tablas mysql en el foro de Mysql en Foros del Web. Hola a tod@s!!! Tengo tres tablas carrito, cliente y producto y quiero hacer una consulta para que me muestre lo que ha comprado un cliente. ...
  #1 (permalink)  
Antiguo 16/04/2015, 05:42
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Duda consulta 3 tablas mysql

Hola a tod@s!!!

Tengo tres tablas carrito, cliente y producto y quiero hacer una consulta para que me muestre lo que ha comprado un cliente.

-carrito:
idCliente
idProcto

-clientes:
IdCliente

-productos:
IdProduct

Esto es lo que tengo hecho, pero no lo muestra correctamente

Código SQL:
Ver original
  1. SELECT R.IdRemolque, R.strNombre, R.intTipo,
  2.    R.strMedidas, R.strMMA, R.IntBastidor, C.idCliente
  3. FROM tblremolques  AS R INNER JOIN  
  4. tblcarrito AS C ON ( R.IdRemolque = C.idRemolque )
  5. INNER JOIN tblclientes AS CL ON ( C.idCliente= CL.IdCliente )

Gracias por vuestra ayuda.

Saludos!

Última edición por gnzsoloyo; 16/04/2015 a las 06:12
  #2 (permalink)  
Antiguo 16/04/2015, 06:14
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, 5 meses
Puntos: 2658
Respuesta: Duda consulta 3 tablas mysql

Cita:
Esto es lo que tengo hecho, pero no lo muestra correctamente
Primero, explicanos a qué te refieres a que no lo muestra correctamente. ¿Como sería correcto y por qué dices que no lo hace?

Segundo:
Cita:
tblremolques
¿Qué tabla es esa? Porque no es ninguna de las tres que mencionas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/04/2015, 07:21
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Duda consulta 3 tablas mysql

Lo que pretendo que haga mi consulta es que muestre los productos que ha comprado un cliente. El usuario registrado compra un producto, entonces en la tabla carrito se añade el idCliente y el idProducto. La consulta quiero que muestre de la tabla productos varios campos que identifican el producto adquirido.
Esta es la estructura de las tablas:
-carrito:
idCliente
idProducto

-clientes:
IdCliente

-productos:
IdProducto

La consulta arroja una serie de datos que no son los que yo busco.

Código SQL:
Ver original
  1. SELECT R.IdProducto, R.strNombre, R.intTipo,
  2.    R.strMedidas, C.idCliente
  3. FROM productos  AS R INNER JOIN  
  4. carrito AS C ON ( R.IdProducto = C.idProducto )
  5. INNER JOIN clientes AS CL ON ( C.idCliente= CL.IdCliente )

Espero que haya quedado un poco más claro.

Saludos!
  #4 (permalink)  
Antiguo 16/04/2015, 07:47
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, 5 meses
Puntos: 2658
Respuesta: Duda consulta 3 tablas mysql

La query, tal como la escribes es correcta, sólo que al no tener una condición WHERE donde indiques de qué cliente quieres los datos, y de qué fecha o sesión, te los mostrará todos. Del primero al último.
Además, si no registras la fecha o sesión de la compra, devovlerá las compras hechas por ese cliente en todas las ocasiones donde haya hecho una.
Adicionalmente, la query te devolverá N registros de productos, y N vceces el mismo cliente, una vez por cada producto, pero eso no es un error, es el comportamiento normal y esperado del INNER JOIN. Mostrar algunos datos y no otros, es algo que debes hacer en la aplicación. La base devuelve tablas de resultados, el qué hagas con ellas no es problema de la base.

Muestranos qué resultado obtienes y cuál es el que dices que deberías obtener. De ese modo veremos realmente a qué te refiere, porque decir "no son los que yo busco", no es una infornación útil.
Necesitamos ver lo que quieres...
__________________
¿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 16/04/2015, 08:18
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Duda consulta 3 tablas mysql

Me sale la siguiente información:
IdProducto strNombre intTipo strMedidas idCliente
3 prod1 1 100 25
3 prod1 1 100 25
3 prod1 1 100 25
4 prod2 1 300 6
4 prod2 1 300 8
4 prod2 1 300 8
4 prod2 1 300 8
4 prod2 1 300 6
4 prod2 1 300 6


Y quiero que solo salgan los que idCliente = 6, es decir, todos aquellos que ha comprado el cliente 6, no importa la fecha en la que se haya producido la compra.
  #6 (permalink)  
Antiguo 16/04/2015, 08:27
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, 5 meses
Puntos: 2658
Respuesta: Duda consulta 3 tablas mysql

Bueno, pero para que salgan sólo los registros del cliente con ID 6 tienes que indicarlo en el WHERE...
¿Por qué no estás poniendo el WHERE?
__________________
¿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 16/04/2015, 08:54
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Duda consulta 3 tablas mysql

Que despiste!!! era cosa del WHERE ahora si muestra las compras del cliente 6.

Otra duda que me ha surgido ahora, si esa misma consulta la quiero hacer según el cliente que sea, es decir, segun el idCliente. ¿Se puede comparar el WHERE con una variable de sesion en la que esté guardada ese idCliente?, ¿o hay algun otro modo?

Saludos!
  #8 (permalink)  
Antiguo 16/04/2015, 09:27
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, 5 meses
Puntos: 2658
Respuesta: Duda consulta 3 tablas mysql

Cita:
Iniciado por jappier Ver Mensaje
Otra duda que me ha surgido ahora, si esa misma consulta la quiero hacer según el cliente que sea, es decir, segun el idCliente. ¿Se puede comparar el WHERE con una variable de sesion en la que esté guardada ese idCliente?, ¿o hay algun otro modo?
Bueno, eso simplemente requiere que lo hagas programáticamente, es decir que al construir la consulta a la base, incorpores el valor de la variable en la sentencia.
Ten en cuenta que la base de datos no entiende de variables de los lenguajes de programación. Son cosas independientes.
En ese caso, dependiendo del lenguaje usado, será el metodo mas conveniente para hacerlo.
Pero eso es OFF TOPIC en este foro. te conviene preguntar en el subforo del lenguaje que uses.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 16/04/2015 a las 09:42
  #9 (permalink)  
Antiguo 16/04/2015, 09:39
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Duda consulta 3 tablas mysql

Ok amigo, muchas gracias por tu tiempo y ayuda.

Saludos!

Etiquetas: select, 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 18:30.