Nueva pregunta

Pregunta:

Fecha: 03-05-2020 15:09:42 (En Español)

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
Etiquetas: Base de Datos - MySQL - PHP 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
 
frjcbbae garagebible.com