SQL - Extraer registro tabla relacionada

 
Vista:

Extraer registro tabla relacionada

Publicado por celia (2 intervenciones) el 01/04/2018 17:33:03
Me podeis ayudar con una consulta ???

Por un lado tengo una tabla Articulos (id, descripcion, precio) por otra parte tengo una tabla Articulo_Imagen (id, id_articulo, ruta_imagen). Necesito hacer una consulta que me retorne todos los Articulos de la primera tabla y la primera imagen del articulo de la segunda tabla.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Extraer registro tabla relacionada

Publicado por xve (284 intervenciones) el 01/04/2018 21:33:31
Hola Celia, no se que base de datos estas utilizando, pero en MySQL podría ser algo así?

1
SELECT * FROM Articulos a LEFT JOIN Articulo_Imagen ai ON a.id=ai.id_articulo GROUP BY ai.id_articulo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Extraer registro tabla relacionada

Publicado por Celia (2 intervenciones) el 02/04/2018 07:07:30
Hola, estoy usando Postgresql.

Esta consulta la he probado y no funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 184
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Extraer registro tabla relacionada

Publicado por gilman (103 intervenciones) el 02/04/2018 08:15:46
Prueba:
1
2
3
4
5
6
SELECT *
FROM ARTICULOS, (SELECT MIN(IDIMAGEN) IMAGEN, ID_ARTICULO
				FROM  IMAGENES GROUP BY ID_ARTICULO) PRIMERAIMAGEN,
				IMAGENES
WHERE ARTICULOS.ID = PRIMERAIMAGEN.ID_ARTICULO (+)
AND PRIMERAIMAGEN.IMAGEN = IMAGENES.ID(+)
No he podido probarla, no dispongo de PostgreeSQL, pero debería funcionar.
El problema podría estar en el rendimiento debido a la subconsulta, si por primera imagen se entiende la imagen principal, yo añadiría un campo a la tabla de imagenes donde se indique que es la imagen principal, y añadiría la condición a la consulta:
1
2
3
4
SELECT *
FROM ARTICULOS, IMAGENES
WHERE ARTICULOS.ID = IMAGENES.ID_ARTICULO (+)
AND  IMAGENES.PRINCIPAL = -1
Esta última sentencia requiere que si un articulo tiene alguna imagen debe tener una imagen marcada como principal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar