Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2014
n03l n03l is offline
Miembro
 
Registrado: feb 2007
Posts: 73
Poder: 18
n03l Va por buen camino
Ayuda con LEFT JOIN

Saludos, haber si alguien me hecha una ayudita en una consulta SQL.

El asunto es el siguiente: Tengo 3 tablas

Código SQL [-]
CREATE TABLE USUARIOS (
    USUARIO  VARCHAR(25) NOT NULL
);

/*Datos de la tabla anterior */
USUARIO
USUARIO1
USUARIO2

/*Esta tabla guarda los correos que el usuario a enviado */
CREATE TABLE CORREOS (
    DESTINATARIO  VARCHAR(200),
    MENSAJE       VARCHAR(200),
    USUARIO       VARCHAR(25),
    COD           INTEGER NOT NULL
);

/*Datos de la tabla anterior */
DESTINATARIO  MENSAJE  USUARIO  COD
JUAN@gmail.com  Hola Juan  USUARIO1  1
PEDRO@gmail.com  Hola Pedro  USUARIO2  2
DESCONOCIDO@gmail.com  Hola desconocido tu no perteneces a mi lista de contactos  USUARIO1  3



CREATE TABLE CONTACTOS (
    NOMBRE   VARCHAR(30),
    CORREO   VARCHAR(200),
    USUARIO  VARCHAR(25)
);

/*Datos de la tabla anterior */
NOMBRE   CORREO          USUARIO
JUAN  JUAN@gmail.com  USUARIO1
PEDRO  PEDRO@gmail.com  USUARIO2
JUAN  JUAN@gmail.com  USUARIO2


la consulta q hago

Código SQL [-]
select contactos.nombre ,  correos.destinatario ,correos.usuario , correos.mensaje
from correos

LEFT JOIN usuarios ON correos.usuario =usuarios.usuario

LEFT OUTER JOIN contactos ON contactos.correo =correos.destinatario

Where usuarios.usuario='USUARIO1'

y el resultado es el siguiente:
Código SQL [-]
NOMBRE  DESTINATARIO  USUARIO  MENSAJE
JUAN  JUAN@gmail.com  USUARIO1  Hola Juan
JUAN  JUAN@gmail.com  USUARIO1  Hola Juan
  DESCONOCIDO@gmail.com  USUARIO1  Hola desconocido tu no perteneces a mi lista de contactos



USUARIO1 le envio a JUAN, pero como juan tambien pertenece a los contactos de USUARIO2 me lo repite!!!!

Última edición por n03l fecha: 19-01-2014 a las 20:40:26.
Responder Con Cita
  #2  
Antiguo 20-01-2014
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 20
celades1 Va por buen camino
Puedes poner un distinct
Responder Con Cita
  #3  
Antiguo 20-01-2014
n03l n03l is offline
Miembro
 
Registrado: feb 2007
Posts: 73
Poder: 18
n03l Va por buen camino
Gracias por responder.

Si funciona con distinct pero si algun usuario tiene agregado el contacto con otro Nombre por ejemplo
JUAN HERMANO

y otro solo como JUAN seguiria saliendo repetido.

e intentado hacer esto:
Código SQL [-]
select contactos.nombre ,  (distinct correos.destinatario ,correos.usuario , correos.mensaje)

para diferenciarlos por los ultimos tres campos, pero no funciona

saludos
Responder Con Cita
  #4  
Antiguo 20-01-2014
VictorPenyalver VictorPenyalver is offline
Miembro
 
Registrado: abr 2006
Posts: 19
Poder: 0
VictorPenyalver Va por buen camino
Consulta

Prueba con esto,

Código SQL [-]

select contactos.nombre ,  correos.destinatario ,correos.usuario , correos.mensaje
from correos

LEFT JOIN usuarios ON correos.usuario =usuarios.usuario

LEFT OUTER JOIN contactos ON (contactos.correo = correos.destinatario and contactos.usuario = correos.usuario)

Where usuarios.usuario='USUARIO1'

Asi solo trae los contactos del usuario del correo. Como lo tienes tu, trae todos los contactos que también tengan ese correo.

Saludos!
Responder Con Cita
  #5  
Antiguo 20-01-2014
n03l n03l is offline
Miembro
 
Registrado: feb 2007
Posts: 73
Poder: 18
n03l Va por buen camino
Gracias VictorPenyalver eso era lo que buscaba funciono perfecto, tenia 2 dias en eso. de verda gracias. saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Left Join peripla SQL 1 28-06-2007 19:52:46
usando LEFT JOIN o RIGHT JOIN alcides SQL 8 03-05-2007 18:35:46
left join e inner join duda Patricio SQL 0 26-04-2007 23:06:43
Left Join con parámetro lucasarts_18 SQL 2 21-07-2006 00:54:53
LEFT OUTER JOIN e INNER JOIN Juntos alcides SQL 3 08-07-2005 19:06:27


La franja horaria es GMT +2. Ahora son las 02:16:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi