SQL Server - disctinct para un solo campo

   
Vista:

disctinct para un solo campo

Publicado por apis (26 intervenciones) el 05/01/2009 20:09:43
Hola! tengo lo siguiente, una tabla de productos y otra de imagenes, las imagenes pueden ser muchas, entonces quiero una consulta que me muestre solo la primer imagen de algun producto, de los productos pues necesito los campos como por ejemplo el nombre, precio e imagen, pero no me funciona el distinct ya que como la imagen es diferente pues no lo toma como duplicado, hay alguna manera de especificar en el distinct que lo haga solo sobre los campos nombre y que ignore el campo de la imagen?
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

RE:disctinct para un solo campo

Publicado por apis (26 intervenciones) el 05/01/2009 23:22:20
Bueno aunque es una duda que de repente tengo porque creo que postgresql le ponia parentesis y ya era solo sobre lo que estaba entre parentesis o eso creo, pero bueno lo solucione agregando un campo imagen a la tabla productos y cada insert que haga a la tabla imagenes pues actualizo el campo de imagen de la tabla productos.
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

RE:disctinct para un solo campo

Publicado por pacopaz (131 intervenciones) el 06/01/2009 00:13:53
Aunque no es necesariamente lo más correcto hacerlo de esta manera, debido a la duplicidad de información (sin mencionar que las imágenes son muy pesadas para su manejo en la base de datos), lo que se me ocurre es incluir un autonumérico en la tabla de imágenes y al hacer la cunsulta, buscar el máximo número de este autonumérico.
Supuestos:
Tabla de productos: Productos(id, nombre, descripcion, precio, ...)
Tabla de imagenes: Imagen(id, imagen, numero) *[numero es el autonumérico]

Query:
select p.*, i.imagen
from Productos p left join Imagen i
on p.id = i.id
and i.numero = (select max(m.numero) from Imagen m where m.id = p.id)

Saludos.
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

RE:disctinct para un solo campo

Publicado por Liliana (151 intervenciones) el 06/01/2009 14:52:40
Hola,
En SQL Server hubiera sido posible una subconsulta (desconozco Postgre):

SELECT Nombre, Imagen = (SELECT TOP 1 Imagen FROM Imagenes I where I.Id = P.Id)
FROM Productos P

Saludos.
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

RE:disctinct para un solo campo

Publicado por apis (26 intervenciones) el 08/01/2009 06:13:23
Gracias por su aporte intente poner la subconsulta pero no supe como, nomas no me funciono, probare sus querys, y bueno la imagen no la guardo en la base de datos solo guardo la ruta, y pues ma parecio mas facil incluir el campo con la ruta de la imagen a la tabla productos asi no necesito hacer el join a la de imagenes ni subconsultas ni nada. Entonces no hay forma de hacer un distinct para un solo campo cuando la consulta tenga mas de 1 campo? solo se resuelve con subconsultas?
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

RE:disctinct para un solo campo

Publicado por Liliana Sorrentino (151 intervenciones) el 08/01/2009 14:46:57
Bueno, no me queda claro lo que decís sobre la ruta de la imagen, pero tené en cuenta que cuando hagas respaldo de la BD no tendrás las imágenes incluídas, o que si tuvieras que cambiar las imágenes de ubicación, deberás cambiar también las rutas de los productos... en fin... en tu lugar me cercioraría de haber tomado la mejor decisión tomando en cuenta los riesgos.

En cuanto al DISTINCT, no puede usarse de la manera que lo planteas.
Saludos,
Liliana.
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

RE:disctinct para un solo campo

Publicado por apis (26 intervenciones) el 13/01/2009 04:58:32
Hi! al hacer un update o insert sobre la tabla imagenes un trigger modifica el campo de la respectiva tabla productos, asi siempre se actualiza en los 2 campos, es una base de datos de 2000 productos y en aumento, poner un campo image para todo sera una base de datos de gran tamaño y al usar sql express pues hay limite en cuanto al tamaño de la base de datos creo que 4 gb y pues las imagenes no son la unica informacion que se guarda en la base de datos,ademas que si de por si la consulta sql se hace un poco lenta aunque tenga indices pues esta algo lenta si lo hiciera con el campo image creo que se pondria aun mas lenta, aparte de que se tiene que estar leyendo por bytes para poner la imagen en una pagina web o windows form,
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