Pregunta:
Fecha: 03-05-2020 15:09:42
(En Español)
tengo tabla Productos, Tabla imágenes- Un producto puede tener varias imágenes y Tabla característica, un producto tiene varias característica.
Mi pregunta es como puedo plantear para que solo sea una consulta. En estos momentos hago 3 consultas por separado según el Id del producto. No se si esta bien o quizás con una sola consulta JOIN se puede resolver.
Lo que muestro es el detalle de un producto seleccionado.
Desde ya muchas gracias
Votos: 0 - Respuestas: 8 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
Consulta a varias Tablas[No resuelta]
Hola buenas noche, en esta oportunidad quiero consultar como relacionar tablas en consulta SQL.tengo tabla Productos, Tabla imágenes- Un producto puede tener varias imágenes y Tabla característica, un producto tiene varias característica.
Mi pregunta es como puedo plantear para que solo sea una consulta. En estos momentos hago 3 consultas por separado según el Id del producto. No se si esta bien o quizás con una sola consulta JOIN se puede resolver.
Lo que muestro es el detalle de un producto seleccionado.
Desde ya muchas gracias
Votos: 0 - Respuestas: 8 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 04-05-2020 11:45:12 Que tal Sebastian, oye manda la estructura de las tablas para poder ayudarte a armar el query pero de inicio seria algo así
SELECT
u.id
,u.name
,u.email
,uv.token
FROM users u
JOIN user_verifications uv ON (uv.user_id = u.id)
;
Lo que hace este query es obtener todas las verificaciones de usuarios y los datos del usuario, espero pueda servirte Votos: 1 - Link respuesta -
Fecha: 05-05-2020 05:15:52 Hola Sebastian,
Como menciona Ruben, deberías utilizar un JOIN pues 3 consultas son innecesarias. Votos: 0 - Link respuesta -
Fecha: 05-05-2020 06:54:57 Hola Buen día a ambos, ahí practicando un poco logré obtener los resultados. con esta consulta de prueba.
SELECT productos.precio, imagenes.nombre, caracteristicas.caracteristica FROM productos INNER JOIN imagenes ON imagenes.id_Producto=productos.Id_productos INNER JOIN caracteristicas ON caracteristicas.id_producto=productos.Id_productos WHERE productos.Id_productos='5'
obtengo:
precio nombre (imagen) caracteristica
767.32 Alambre_Imsa Cobre esmaltado
767.32 Alambre_Imsa_Vertical Cobre esmaltado
767.32 Alambre Cobre esmaltado
767.32 Alambre_slider Cobre esmaltado
Mi problema ahora es otro, como tengo 4 imágenes en el While el precio me aparece 4 veces porque tengo 4 imágenes y característica tengo una pero me hace el eco por la cantidad de imágenes.
debería hacer una consulta con COUNT y hacer un ciclo for? pero vuelvo hacer varias consulta.
Muchas gracias Votos: 0 - Link respuesta -
Fecha: 05-05-2020 09:02:22 Ya no entendí que es lo que requieres ya que para mi es correcto los 4 precios por que entiendo que son 4 productos diferentes ¿en la tabla productos tienen diferente precio y te está saliendo el mismo? Votos: 0 - Link respuesta
-
Fecha: 05-05-2020 10:57:23 Hola Ruben, no el precio es uno solo, me lo repite en este caso porque tengo 4 imagenes.
yo necesito que solo traiga el precio. todas las imágenes y todas las características. como vez en característica tengo cargada solo una y me sale 4 veces. Votos: 0 - Link respuesta -
Fecha: 29-05-2020 16:09:33 Podrias colocar la estructura de tus tablas? Yo constantemente tengo que lidiar con este tipo de situaciones pero no uso joins, sino consultas con una cadena de condiciones WHERE Votos: 0 - Link respuesta
-
Fecha: 31-05-2020 05:30:17 Hola Juan como esta le adjunto la estructura.
Tabla Producto
1 Id_productosPrimaria int(11) AUTO_INCREMENT
2 Codigo varchar(100)
3 Titulo varchar(100) latin1_swedish_ci
4 precio double
5 Lista2 double
6 Lista3 double
7 Stock int(11)
8 Id_Categoria int(45)
9 id_Subcategoria int(11)
10 imagen varchar(100)
11 Id_Unidad int(11)
12 descripcion longtext
13 Id_Promo int(11)
14 Recomendacion varchar(100)
15 fecha date
16 Largo int(3)
17 Ancho int(3)
18 Alto int(3)
19 Peso int(5)
Tabla Caracteristica (Muchas caracteristica para un producto)
id_caracteristica Primaria int(11) AUTO_INCREMENT
2 caracteristica varchar(50)
3 id_producto
Tabla Imagenes (Muchas imagenes para un producto)
id_Imagen Primaria int(11) AUTO_INCREMENT
2 id_Producto int(11)
3 nombre varchar(50)
4 principal int(11)
Gracias de antemano, Saldos Votos: 0 - Link respuesta -
Fecha: 02-06-2020 03:51:02 Creo que lo que deseas es mostrar todas las características de un producto y, además, todas sus imágenes. Si ejecutas una clausula incluyendo todo eso, vas a obtener imagenes (o características) repetidas: la que tenga menos información se repite pues debe llenarse el contenido de todos los registros. Entonces, se hace en dos consultas, ambas similares. Para recuperar todas las características (asumo que estas buscando un producto con id_productos = 1):
$producto_id = 1; select productos.*, caracteristicas.* from productos, características where caracteristicas.id_producto = productos.id_productos and productos.id_productos = $producto_id; // Ahora ejecutas la consulta y procesas el resultado
y para recuperar todas las imágenes:select productos.*, imagenes.* from productos, imagenes where imagenes.id_producto = productos.id_productos and productos.id_productos = $producto_id; // nuevamente, ejecutas la consulta y procesas el resultado
Cada consulta la realizas en el lugar de tu código html en que necesites mostrar ya sea las características o las imágenes. Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
