Ver Mensaje Individual
  #17 (permalink)  
Antiguo 21/11/2013, 11:58
PabloManuel
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: consulta en mysql sobre 3 tablas

Bueno, no tengo más remedio que seguir, de momento va a funcionar así y si me ofrecéis otra solución lo cambio, porque es engorroso a más no poder.

En caso de que el usuario no haga filtrado, saco todos los pedidos y los pagino con esta instrucción:

Código MySQL:
Ver original
  1.         Pe.id,
  2.         pe.Su_Referencia,
  3.         pe.Fecha_ped,
  4.         pe.bimponible,
  5.         pe.id_user,
  6.         (select nombre from usuarios where id=pe.id_user) as nombre,
  7.         (Select le.id_estado From Ec_Pedidos_LinEst As Le Where le.id_pedido=pe.id and le.fechahora=(select max(fechahora) from ec_pedidos_linest where id_pedido=pe.id)) As Estado
  8.         EC_Pedidos as Pe

Si el cliente realiza una búsqueda con uno o más campos le anidaré un Where quedando la siguiente consulta en caso de que cumplimente todos los campos del buscador:
Código MySQL:
Ver original
  1.         Pe.id,
  2.         pe.Su_Referencia,
  3.         pe.Fecha_ped,
  4.         pe.bimponible,
  5.         pe.id_user,
  6.         (select nombre from usuarios where id=pe.id_user) as nombre,
  7.         (Select le.id_estado From Ec_Pedidos_LinEst As Le Where le.id_pedido=pe.id and le.fechahora=(select max(fechahora) from ec_pedidos_linest where id_pedido=pe.id)) As Estado
  8.         EC_Pedidos as Pe
  9.     (Select le.id_estado From Ec_Pedidos_LinEst As Le Where le.id_pedido=pe.id and le.fechahora=(select max(fechahora) from ec_pedidos_linest where id_pedido=pe.id)) = 1
  10.     AND
  11.     (select nombre from usuarios where id=pe.id_user) Like '%loma%'
  12.     And
  13.     pe.su_referencia like '%89%'
  14.     And
  15.     pe.fecha_Ped >= '2003-05-05' | pe.fecha_Ped <= '2003-05-05' | pe.fecha_ped Between '2003-01-05' and '2003-12-05'
  16.     And
  17.         (
  18.         pe.DF_RazonSocial like '%xxxxxx%'
  19.         or
  20.         pe.DF_CIF like '%xxxxxx%'
  21.         or
  22.         pe.DF_Direc1 like '%xxxxxx%'
  23.         or
  24.         pe.DF_Direc2 like '%xxxxxx%'
  25.         or
  26.         pe.DF_CP like '%xxxxxx%'
  27.         or
  28.         pe.DF_Localidad like '%xxxxxx%'
  29.         or
  30.         pe.DF_Provincia like '%xxxxxx%'
  31.         or
  32.         pe.DF_Pais like '%xxxxxx%'
  33.         or
  34.         pe.DE_Nombre like '%xxxxxx%'
  35.         or
  36.         pe.DE_Direc1 like '%xxxxxx%'
  37.         or
  38.         pe.DE_Direc2 like '%xxxxxx%'
  39.         or
  40.         pe.DE_CP like '%xxxxxx%'
  41.         or
  42.         pe.DE_Localidad like '%xxxxxx%'
  43.         or
  44.         pe.DE_Provincia like '%xxxxxx%'
  45.         or
  46.         pe.DE_Pais like '%xxxxxx%'
  47.         or
  48.         )

la línea
pe.fecha_Ped >= '2003-05-05' | pe.fecha_Ped <= '2003-05-05' | pe.fecha_ped Between '2003-01-05' and '2003-12-05'
afecta a la fecha del pedido de tres maneras, desde, hasta o entre, por lo tanto según si cumplimenta uno o dos campos de filtrado para fecha tendrá uno de los tres formatos.