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

Consulta Sql excluyendo tuplas con un campo que tiene el mismo valor

Estas en el tema de Consulta Sql excluyendo tuplas con un campo que tiene el mismo valor en el foro de Mysql en Foros del Web. Hola gente , no se si el título se entenderá , pero la verdad que me ha costado un poco explicarlo en tan pocos caracteres; ...
  #1 (permalink)  
Antiguo 28/09/2012, 06:21
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Consulta Sql excluyendo tuplas con un campo que tiene el mismo valor

Hola gente , no se si el título se entenderá , pero la verdad que me ha costado un poco explicarlo en tan pocos caracteres; resulta que tengo una consulta:

Código:
SELECT DISTINCT o.id,o.user_id FROM #__rty_pp_orders AS o 
    LEFT JOIN #__rty_user_info AS ui ON o.user_id = ui.user_id
    LEFT JOIN #__users AS u ON o.user_id = u.id
    JOIN #__rty_pp_payments AS p ON o.id = p.order_id
    WHERE ui.user_id IS NULL OR u.id IS NULL
    ORDER BY o.user_id
Donde quiero que los user_id NUNCA se repitan , es decir que no me devuelva más de una sola fila en la que user_id sea igual a otra ya devuelta.

El código de arriba a pesar de poner DISTINCT no funciona correctamente (o igual es que el distinct es solo para la id de la tupla)

Gracias de antemano.
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 28/09/2012, 07:17
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 11 años, 8 meses
Puntos: 21
Respuesta: Consulta Sql excluyendo tuplas con un campo que tiene el mismo valor

Como bien dices al final, solo mostraras campos distintos pero del campo id, prueba a poner el distinct en o.user_id.

Código SQL:
Ver original
  1. SELECT o.id, DISTINCT(o.user_id)
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D
  #3 (permalink)  
Antiguo 28/09/2012, 07:32
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: Consulta Sql excluyendo tuplas con un campo que tiene el mismo valor

Cita:
Iniciado por antoniopol Ver Mensaje
Como bien dices al final, solo mostraras campos distintos pero del campo id, prueba a poner el distinct en o.user_id.

Código SQL:
Ver original
  1. SELECT o.id, DISTINCT(o.user_id)
Si eso ya lo había probado para no funciona:

Código:
SELECT  o.id,DISTINCT (o.user_id) FROM #__abc_pp_orders as o
    JOIN #__abc_pp_payments AS p  ON p.order_id = o.id  
    LEFT JOIN #__abc_user_info AS ui ON o.user_id = ui.user_id
    LEFT JOIN #__users AS u ON o.user_id = u.id
    
    WHERE ui.user_id IS NULL OR u.id IS NULL
    ORDER BY o.user_id
No me devuelve nada , pero gracias de todas formas.
__________________
Videotutoriales de Drupal
  #4 (permalink)  
Antiguo 28/09/2012, 08:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta Sql excluyendo tuplas con un campo que tiene el mismo valor

En ese contexto, la consulta es medio irracional, como si le faltaran grandes pedazos.
Empecemos por un detalle: No puede devolverte ordenes ni pagos que puedan no tener relación con un user_id o su info. Eso no tiene ningún sentido.
En el contexto de lo que se infiere del diseño de datos, un usuario puede tener info, puede tener pedidos y puede tener pagos. Pero por lo pronto, el user debe existir, no puede ser NULL, y estás buscando datos de usuarios que no existen...
Eso es lo que representa esto:
Código MySQL:
Ver original
  1. ui.user_id IS NULL
  2.     OR
  3.     u.id IS NULL
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, select, sql, campos
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 05:44.