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

Consulta algo rara (¿subconsultas?)

Estas en el tema de Consulta algo rara (¿subconsultas?) en el foro de Bases de Datos General en Foros del Web. Buenas! veréis, tengo una duda que no se ni como describir, os cuento el "escenario": Una tabla con productos, llamada "listado", que contiene un codigo_producto ...
  #1 (permalink)  
Antiguo 30/08/2010, 16:41
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Consulta algo rara (¿subconsultas?)

Buenas!

veréis, tengo una duda que no se ni como describir, os cuento el "escenario":

Una tabla con productos, llamada "listado", que contiene un codigo_producto y un nombre. Luego hay otra tabla llamada "productos" que tiene su ID, el codigo_producto (que es el mismo que el del listado) y otro que es ruta_imagen, con una ruta de la imagen.

En la tabla listado están todos los registros, por ejemplo 10.000, pero en la de productos solo hay 10, que son los que le hemos añadido una foto. Lo que quiero hacer es mostrar todos los registros de la tabla listado, pero ordenando para que salgan primero los que tengan foto.

He intentado hacer: "SELECT L.* FROM listado L,productos P ORDER BY P.ruta_foto" pero me saca los registros duplicados, y he probado poniendo otras cosillas y no consigo hacer algo tan "simple" como eso.

Me podéis echar una mano? En teoría no le veo dificultad pero técnicamente no encuentro la forma de hacerlo...

Muchas gracias!
  #2 (permalink)  
Antiguo 31/08/2010, 05:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta algo rara (¿subconsultas?)

Código MySQL:
Ver original
  1. SELECT L.*,P.ruta_foto
  2. FROM listado L left join productos P
  3. ON L.codigo_producto=P.codigo_producto
  4. ORDER BY IF(P.ruta_foto IS NULL,1,0),P.ruta_foto


No se que motor estas usando, si es mysql, IF(P.ruta_foto IS NULL,1,0) te sirve para forzar que los nulos salgan despues de los no nulos...

left join ... on ...

Hace que salgan todos los registros de la tabla de la izquierda combinados con los de la de la derecha.

Quim
  #3 (permalink)  
Antiguo 31/08/2010, 05:33
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Consulta algo rara (¿subconsultas?)

Muchas gracias!! es justo lo que necesitaba, todavía estoy algo pez y no se utilizar el LEFT JOIN, tampoco conocía el IF(P.ruta_foto IS NULL,1,0) para mostrar primero los NO NULL, gracias!

Etiquetas: bases-de-datos
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 20:38.