/ / Recuperando registros uniq con union en mysql - mysql, duplicados, union

Recuperando registros uniq con unión en mysql - mysql, duplicados, unión

Tengo dos mesas para usuarios y usuarios (no puedoesquema de cambio, muchos cambios de sistema deben hacerse en PHP de lo contrario). Debería obtener todos los registros de usuario en una consulta, pero debería marcarlos si están dentro o fuera. Además, un usuario puede tener un registro de entrada y salida que no debería mostrar en el registro si tiene un registro de salida.

He creado tablas con datos de muestra en SQL Fiddle: http://www.sqlfiddle.com/#!9/ac99a/1/0

¿Puede ayudarme? ¿Cómo puedo eliminar duplicados de registros de usuarios en esta consulta de unión?

Respuestas

0 para la respuesta № 1

Si desea tener todas las entradas con una entrada en la tabla de entrada o salida, pero no en las dos, una combinación externa completa sería su amigo.

Como MySQL no conoce ese tipo de unión, puedes emularla con una combinación externa izquierda y una combinación externa derecha combinadas de esta manera:

SELECT
ui.id, ui.user, "i"
FROM
usersIN ui
LEFT OUTER JOIN
usersOUT uo ON ui.user = uo.user
WHERE uo.id IS NULL
UNION
SELECT
uo.id, uo.user, "o"
FROM
usersIN ui
RIGHT OUTER JOIN
usersOUT uo ON ui.user = uo.user
WHERE ui.id IS NULL;

Esto debería darle la salida correcta.

Una buena explicación visual de las uniones puede ser encontrado aquí