Ver Mensaje Individual
  #1  
Antiguo 21-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cómo utilizar consultas con DISTINCT de forma correcta

Hola,

Salud para todos. Me encuentro con un problema al tratar de llevar a cabo cierta consulta en MySQL trabajando con PHP. El objetivo de la consulta es obtener una serie de registros sin duplicar y para ello la escribo como sigue:

Código PHP:
$consultaSql "SELECT DISTINCT enlaces.url, enlaces.titulo, enlaces.fecha, 
                 enlaces.descripcion, enlaces.etiquetas, usuarios.login 
                  FROM enlaces, usuarios"

La intención de la consulta es, como digo, que retorne una serie de registros (enlaces) que no estén duplicados. El problema viene dado (por lo poco que he averiguado sobre DISTINCT) al incluir también en el SELECT un campo perteneciente a otra tabla.

Como el DISTINCT se realiza sobre los campos incluidos en el SELECT, resulta que la consulta al cabo retorna enlaces repetidos, porque los usuarios de los enlaces no están repetidos... ¿se comprende? Esta consulta funciona tal como se espera:

Código PHP:
$consultaSql "SELECT DISTINCT enlaces.url, enlaces.titulo, enlaces.fecha, 
                 enlaces.descripcion, enlaces.etiquetas 
                  FROM enlaces"

O sea, retorna enlaces sin duplicar, cuyos campos especificadosen el SELECT no sean iguales. Pero, entonces estoy en un problema... porque según mi lógica (pobre, de diez duros) sería bien que dicha cosulta me retornara también los nombres de los usuarios, porque estos son como los "dueños" de los enlaces, y, junto a la información de cada enlace quisiera mostrar a su dueño.

Lo que se me ocurre (el no va más) es incluir en la consulta anterior el campo "id_usuario" conque cuenta cada enlace, y, luego, para cada enlace, buscar el "nombre" del usuario correspondiente a ese "id_usuario",... pero, claro está, si hay cien enlaces... significarían cien consultas a la base de datos... y esto no tiene mucho sentido, porque a más enlaces más consultas... algo que no concuerda demasiado, ¿no os parece?

En fin. Maestros del SQL, licenciados en PHP, iniciados en DISCINCT y sabios en general, ¿qué puedo hacer? ¿pido un imposible? ¿se me está escapando alguna cosa? Seguro. Muchas gracias de antemano por cuanto podáis decir al respecto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita