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

[SOLUCIONADO] problemas con consulta sql

Estas en el tema de problemas con consulta sql en el foro de Mysql en Foros del Web. hola amigos, creia que la consulta que estaba haciendo funcionaba bien pero no, no hace lo que debe. resulta que tengo dos tablas en una ...
  #1 (permalink)  
Antiguo 16/06/2015, 14:12
 
Fecha de Ingreso: mayo-2003
Mensajes: 194
Antigüedad: 20 años, 11 meses
Puntos: 4
problemas con consulta sql

hola amigos, creia que la consulta que estaba haciendo funcionaba bien pero no, no hace lo que debe.

resulta que tengo dos tablas en una pagina,

una de ellas se llama "avisos pendientes de cita" donde me tienen que aparecer los avisos que no tienen una fecha o una hora definida por el momento.

la otra tabla se llama "avisos planificados" y deven de aparecer los avisos que ya tienen definida fecha de cita y hora de cita.

estos avisos se les muestran a un tecnico, segun sea el codigo del tecnico te muestra sus avisos.

y lo que me esta pasando que aunque ponga un aviso para un tecnico en concreto tambien me lo esta mostrando a otro tecnico con diferente codigo de tecnico.

aqui una muestra.




veis: codigo_avi (codigo aviso)
codigo_cli (codigo_cliente)
codigo_tec (codigo del tecnico)

pero por ejemplo creo un aviso para el tecnico 2 y me aparece tambien en el 1.



y tambien en el otra pagina de otro tecnico diferente.




esta es la consulta que estoy haciendo para que muestre los avisos que no tienen fecha ni hora definida
Código MySQL:
Ver original
  1. SELECT * FROM avisos
  2. WHERE (codigo_tec=$codigo_tec and finalizado='no'
  3. and fecha_cita='00-00-00' or hora_cita='00:00:00')

y esta la consulta para que me saque los avisos segun el tecnico que ya tienen fecha y hora definida:
Código SQL:
Ver original
  1. SELECT * FROM avisos
  2. WHERE (codigo_tec=$codigo_tec AND finalizado='no'
  3. AND fecha_cita<>'00-00-00' AND hora_cita<>'00:00:00')
  4. ORDER BY Fecha_cita ASC

pero ya digo que me muestra avisos para los dos tecnicos deferentes.

he probado a cambiar la consulta a:

Código MySQL:
Ver original
  1. SELECT * FROM avisos
  2. WHERE (codigo_tec=$codigo_AVI and finalizado='no' and fecha_cita='00-00-00' or hora_cita='00:00:00')
y

Código MySQL:
Ver original
  1. SELECT * FROM avisos
  2. WHERE (codigo_AVI=$codigo_tec and finalizado='no' and fecha_cita='00-00-00' or hora_cita='00:00:00')
pero cuando pongo eso no me aparece nada en la pagina, me sale en blanco todo, no recoge ninguna consulta.

a ver si alguien me puede ayudar. muchas gracias.

Última edición por gnzsoloyo; 17/06/2015 a las 05:57
  #2 (permalink)  
Antiguo 17/06/2015, 00:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problemas con consulta sql

El problema es por la forma en que estás "agrupando" las condiciones:

Código MySQL:
Ver original
  1. SELECT * FROM avisos
  2. WHERE (codigo_tec=1 AND finalizado='no' AND fecha_cita='00-00-00' OR hora_cita='00:00:00')

De nada sirven los paréntesis, porque el OR del final hará que todas las condiciones anteriores sean ignoradas cuando no se haya definido la hora, supongo que lo que pretendes es:

1- Forzar código de técnico y finalizado = 'no' (primer grupo de condiciones)
2- Además que la fecha u hora no estén definidas (segundo grupo de condiciones)

Código MySQL:
Ver original
  1. SELECT * FROM avisos
  2. WHERE (codigo_tec=1 AND finalizado='no') AND (fecha_cita='00-00-00' OR hora_cita='00:00:00')

P.D. Muevo el tema a MySQL, puesto que el problema es base de datos y no PHP
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 17/06/2015, 04:29
 
Fecha de Ingreso: mayo-2003
Mensajes: 194
Antigüedad: 20 años, 11 meses
Puntos: 4
Respuesta: problemas con consulta sql

gracias triby.

Funciona a la perfeccion.

muchas gracias amigo.


un saludo.

Etiquetas: fecha, php, select, sql, tabla
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 09:31.