Según lo que posteas:
Código MySQL:
Ver original gente1.nombre usuaenvia,
gente2.nombre usuarecibe,
gente3.nombre usarioenviaoreja,
gente4.nombre usuariorecibeoreja
INNER JOIN gente gente1
ON gente1.id_gente
= oreja.usua_envia_beso
INNER JOIN gente gente2
ON gente2.id_gente
= oreja.usua_recibe_beso
INNER JOIN gente gente3
ON gente3.id_gente
= oreja.usuario_envia_oreja
INNER JOIN gente gente4
ON gente4.id_gente
= oreja.usuario_recibe_oreja
Cita: Si le quito los campos gente3.oreja y gente4.oreja, me funiona, pero si intento colocarle mas campos, deja de hacerlo.
En primer lugar, deberías decirnos qué es lo que devuelve la consulta.
Si devuelve un error, debes decirnos qué error. Nadie puede responder nad si no aportas información precisa; estaríamos adivinando.
Si no devuelve un error, y si devuelve un encabezado de tabla, pero sin registros, entonces la consulta funciona, pero la misma no obtiene resultados porque no hay registros que cumplan esas condiciones.
Cita: POr ejemplo. En la tabla tengo 6 campos "usaurio_envia_oreja", "usaurio_envia_beso", "usuario_envia_gustas", "usuario_recibe_beso","usuario_recibe_oreja"," usua rio_recibe_gustas".
Si un uusario le da a enviar beso, me inserta una linea en la BB.DD y las demas las deja en NULL.
Ahora lo que hago es listarlo por ORDEN DE ID, pero no me funciona.
Donde puede estar el fallo?
Por tu descripción, a mi entender tienes un diseño ineficiente, con alta probabilidad de dar errores o resultados erróneos.
Estás tratando con algo de liviandad el tema de los NULL, si tienes muchos campos con NULL en una determinada condición lo que tienes es un error de diseño, ya que eso significa que las relaciones entre entidades no debes estar agrupadas de la forma en que lo planteaste. Es posible que una mayor cantidad de tablas, administrando cada relación directa, fuera una mejor opción.
En cualquier caso, piensa esto: Un INNER JOIN devuelve registro
sólo si hay coincidencias entre todas sus partes, si una sola no lo tiene, ese registro
no se devuelve.
Yo plantearía primero una prueba de la consulta usando LEFT JOIN en lugar de INNER JOIN para ver si hay puntos de registros que no tienen coincidencias, lo que marcaría por qué no funciona la consulta original.