Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2012, 00:41
Avatar de gepd
gepd
 
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 5 meses
Puntos: 6
¿Consulta sin datos duplicados entre dos tablas?

Hola!

Hace días que estoy haciendo pruebas para poder realizar una consulta mysql para que me devuelva ciertos valores entre dos tablas, el problema es que los envía duplicados, se la razón, pero no sé como solucionarlo, ahora la explicación:

Tengo dos tablas

Código MySQL:
Ver original
  1. TABLE `lista_horarios` (
  2.   `id`,
  3.   `horaIn`,
  4.   `horaOut`,
  5. );
y

Código MySQL:
Ver original
  1. TABLE `horario` (
  2.   `hid`,
  3.   `id_usuario`,
  4.   `id_horario`,
  5.   `fecha`,
  6.   `registrado`,
  7. );

en la tabla lista_horarios tengo una lista de horarios, estos sirven para listarlos cada día (el código es para un sistema de turnos)

en la tabla horario guardo el id del usuario, id del horario, la fecha que seleccionó para el turno y un registro con fecha y hora de cuando realizó la operación.

lo que deseo hacer es listar todos los horarios de la tabla 'lista_horarios' pero a excepción de lo que ya se han tomado para una fecha concreta (hay otras funciones del código que no menciono, porque no son parte del problema)


la consulta que hago para eso es

Código MySQL:
Ver original
  1. SELECT id, horaIn, horaOut
  2. FROM lista_horarios
  3. INNER JOIN horario ON id <> id_horario
  4. AND id_usuario =  '1'
  5. AND fecha =  '2012-04-15'

y me devuelve el doble de registros que tengo menos los que corresponden, esos no los duplica

sería algo como

id 1
id 1
id 2
id 3
id 3
id 4
id 4

el "problema" es que de la tabla horario hay veces que hay más de un resultado, porque un mismo usuario puede haber tomado dos turnos ese mismo día y quizás quiera tomar un tercero
quiere decir que si yo hago un

Código MySQL:
Ver original
  1. SELECT id, horaIn FROM lista_horarios WHERE id_usuario = '1' AND fecha = '2012-04-15'

el resultado podría ser
1 - 09:30
2 - 12:00

es por eso que duplica mis resultados, lo que no sé es cómo hacer para que no los duplique intenté con GROUP BY y DISTINCT, pero al hacerlo obtengo todos los registros, incluyendo los que quiero que no aparezcan.

espero haber sido claro