Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/07/2013, 22:40
minombreesmm
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
left outher join

no me quiere funcionar la consulta

quiero que me muestre los registros de la tabla usuarios


usuarios tiene 11 registros
amigos tiene 6 registros.

quiero que la consulta left outher join me muestre los 11 registro de usuarios y que me muestre como null los que no estan en la tabla amigos.


tomando en cuenta esto.


tabla usuarios
Código tabla usuarios:
Ver original
  1. id
  2. nombre
  3. apellido


tabla amigos
Código tabla amigos:
Ver original
  1. ida
  2. idb
  3. estadosolicitud




el detalle es que el usuarios.id puede estar en amigos.ida como en amigos.idb
y no deben repetirse solo se deben mostrar los registros de la tabla usuarios yen null los que no están en la tabla amigos


sin embargo se repiten




esto contiene la tabla amigos (6 registros)
ida , idb, estadosolicitud
322, 325, 'ACEPTADA'
317, 323, 'YES'
317, 315, 'YES'
315, 320, 'YES'
322, 315, 'ACEPTADA'
315, 316, 'YES'




y esto la usuarios (11 registros)

id , nombreyapellido
321, 'g'
319, 'a'
320, 'b'
317, 'c'
318, 'd'
315, 'e'
316, 'f'
322, 'g'
323, 'h'
324, 'i'
325, 'j'



quiero que la consulta me arroje esto(11 registros)


321, 'g',NULL
319, 'a',NULL
320, 'b'
317, 'c'
318, 'd',NUL
315, 'e'
316, 'f'
322, 'g'
323, 'h'
324, 'i',NULL
325, 'j'


OSEA solamente debe aparecerme null los que no estan.

y donde batallo es que el usuarios.id puede estar en amigos.ida o amigos.idb
y puede hacer que los datos se repitan

hice esto


Código MySQL:
Ver original
  1. select usuarios.id,amigos.idusuario,amigos.idamigo
  2. from usuarios
  3. LEFT OUTER JOIN amigos ON
  4. (usuarios.id=amigos.idusuario) or (usuarios.id=amigos.idamigo)
  5. and amigos.idusuario=315 and amigos.idamigo=315
  6. where usuarios.id<>315
  7. order by usuarios.id;

y este es el resultado, con los mismos datos de arriba
usuarios.id,amigos.ida,amigos.idb
316, null, null
317, 317, 323
317, 317, 315
318, null, null
319,null , null
320, null, null
321,null , null
322, 322, 325
322, 322, 315
323, null, null
324, null, null
325, null, null

(me regresa 12 registros, y solo deben ser 11.
alguna sugerencia?

mi problema radica en que se puede repetir el ida tantas relaciones tenga con idb y biceversa se repite el idb tantas relaciones tenga con el ida.
entonces como se pueden mostrar en null los registros de usuarios que no esten en la tabla amigos si la tabla amigos es posible que se repita muchas veces el id.



de antemano gracias
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 29/07/2013 a las 22:57