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

Problema con Right Join mysql

Estas en el tema de Problema con Right Join mysql en el foro de Mysql en Foros del Web. hola! Necesito traer los datos de la tabla T1 que se relacionen con la tabla T2 y tambien los datos de T1 que no esten ...
  #1 (permalink)  
Antiguo 15/01/2009, 03:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 1
Pregunta Problema con Right Join mysql

hola! Necesito traer los datos de la tabla T1 que se relacionen con la tabla T2 y tambien los datos de T1 que no esten relacionados en T2. Estoy utilzando la siguiente consulta, pero no me esta funcionando.

SELECT DISTINCT
T1.id,
T1.campo1,
T2.campo1,
T2.campo2,
T2.campo3
FROM T2
RIGHT JOIN T1
ON T2.id_oc =T1.id
WHERE T2.id2 = 45
OR T2.id2 is null


Muchas gracias a quien puede ayudarme

Última edición por vanditsession; 15/01/2009 a las 04:16
  #2 (permalink)  
Antiguo 16/01/2009, 07:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problema con Right Join mysql

Código:
SELECT DISTINCT
T1.id,
T1.campo1,
T2.campo1,
T2.campo2,
T2.campo3
FROM T2
RIGHT JOIN T1
ON T2.id_oc =T1.id
WHERE T2.id2 = 45
OR T2.id2 is null
Si T2.id2 es PK nunca será NULO y el registro donde T2.id2=45 puede no estar realcionado con T1.

Si quitas los where te daria todos los de T1 esten o no relacionados con T2

Es mas habitual usar el LEFT

Código:
SELECT DISTINCT
T1.id,
T1.campo1,
T2.campo1,
T2.campo2,
T2.campo3
FROM T1 LEFT JOIN T2
ON T1.id=T2.id_oc;
Es T1.id una PK? T2.id_oc tiene repeticiones? Tienes claro que DISTINCT tendrá en cuenta todos los campos?

Si T2.id_oc tinen repeticiones luego los registros de T1 que se relacionen con varias de T2 saldran repetidos si en los campos de T2 tinen distintos valores...

No entiendo que es lo que estas buscando con el where sobre el id de T2...?

Quim
  #3 (permalink)  
Antiguo 18/01/2009, 16:49
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Problema con Right Join mysql

Hola Quim,

Gracias por la ayuda, te explico tengo una tabla con idiomas y otra tabla que relaciona los usuarios con los idiomas, donde un usuario puede saber mas de un idioma y el sistema le da la posibilidad a futuro de agregar mas idiomas a su perfil. Por lo tanto nececisto listar los idiomas selccionados por el usuario y los no seleccionados esa es la razon por la cula utilizo el where, donde me filtra los idimoas seleccionados de un usuario determinado.


Muchas Gracias.
  #4 (permalink)  
Antiguo 19/01/2009, 03:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problema con Right Join mysql

Luego suponiendo que tienes:

Idiomas
IdIdioma PK
Idioma

Usuarios
IdUsu PK
Nombre

RelUsuIdi
idIdioma FK Idiomas
IdUsu FK Usuarios
::::::(idIdioma,IdUsu) PK


Intenta esto:

Código:
SELECT Idiomas.IdIdioma, Idiomas.Idioma, SubC.IdUsu, SubC.Nombre
FROM Idiomas LEFT JOIN 
   (SELECT R.idIdioma, U.IdUsu, U.Nombre
    FROM Usuarios as U INNER JOIN RelUsuIdioma as R 
    ON U.IdUsu = R.idUsu
    WHERE Usuarios.IdUsu=45) as SubC 
ON Idiomas.IdIdioma = SubC.IdIdioma;



Quim

Última edición por quimfv; 19/01/2009 a las 05:25
  #5 (permalink)  
Antiguo 20/01/2009, 08:06
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Problema con Right Join mysql

Hola Quim,

He probado la consulta que me pasaste pero no he obtenido el resultado esperado con que otra opcion podria intentar.

Mcuhas Gracias.
  #6 (permalink)  
Antiguo 21/01/2009, 02:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problema con Right Join mysql

Tienes la estructura de tablas que yo he supuesto?

en el caso que sea asi y en la tabla idiomas tienes TODOS los idiomas posibles .... tiene que funcionar la he probado...


Si no es el caso luego cuentame la estructura que tienes....(tablas, campos, referencias y contenido)

Quim
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 19:18.