SQL Server - Busqueda

 
Vista:
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por Alejandro (14 intervenciones) el 16/04/2020 11:38:59
Hola buenos día, tengo un formulario y envió unos datos mediante un POST .

Quiero hacer una busqueda en la que si coincide un solo dato muestre esos resultados , si coinciden 2 muestre los resultados con esas dos coincidencias, etc...

Actualmente tengo esté código:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include_once "base_de_datos.php";
 
 
   $Etiq = $_POST["Etiq"];
   $RespImp = $_POST["RespImp"];
   $Fec_Inic = $_POST["Fec_Inic"];
   $Fec_Fin = $_POST["Fec_Fin"];
   $User_Cre = $_POST["User_Cre"];
   $User_Com = $_POST["User_Com"];
   $Orig = $_POST["Orig"];
   $P_R_O = $_POST["P_R_O"];
   $Prioridad = $_POST["Prioridad"];
   $Eficaz = $_POST["Eficaz"];
   $User_Resp = $_POST["User_Resp"];
   $Fec_PrevIni = $_POST["Fec_PrevIni"];
   $Fec_PrevFin = $_POST["Fec_PrevFin"];
   $Estado = $_POST["Estado"];
   $Process = $_POST["Process"];
 
 
$sentencia = $base_de_datos->query("select * , FechaAlt=convert(varchar(10), Fec_Alta, 103), FechaPrev=convert(varchar(10), Fec_Prev, 103), FechaImp=convert(varchar(10), Fec_Imp, 103) from IncidenciasAlbeniz  where  (Fec_Alta >= '$Fec_Inic'  and Fec_Alta <=  '$Fec_Fin') OR User_Cre = '$User_Cre'  OR User_Com = '$User_Com'  OR Orig = '$Orig' OR P_R_O = '$P_R_O'  OR Prioridad = '$Prioridad' OR Etiqueta1 = '$Etiq' OR ResponsableImp = '$RespImp'   OR Estado = '$Estado'   OR Eficaz = '$Eficaz'   OR User_Resp = '$User_Resp'  OR Process = '$Process'  OR (Fec_Alta >= '$Fec_PrevIni' and Fec_Prev <=  '$Fec_PrevFin')");
$Incidencias = $sentencia->fetchAll(PDO::FETCH_OBJ);
?>


Me muestra resultados pero no funciona el filtrado.


Saludos y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por Isaias (4558 intervenciones) el 16/04/2020 17:24:03
¿Y porque no lo publicas en el grupo de desarrollo de PHP?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por Alejandro (14 intervenciones) el 16/04/2020 18:28:15
Porque necesito la consulta correcta en Sql Server. La parte de php no es el problema.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 111
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por Javier (45 intervenciones) el 16/04/2020 23:03:59
Por filtrado te refieres al WHERE de tu consulta? si es así, cual es el resultado que necesitas te arroje la consulta y cual es el que te esta arrojando? si nos das un ejemplo, con esto podríamos darnos una idea de lo que necesitas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por Alejandro (14 intervenciones) el 17/04/2020 14:06:23
Hola,

Me refiero al WHERE, si. Los datos del Post vienen de un formulario. Entonces quiero que si coincide con algún registro lo muestre.

Tal como tengo el where ahora mismo si por ejemplo, meto en el formulario $Estado = Abierta , $User_Cre = PEPITO y el resto null.

Me muestra lo que quiere y tendría que mostrar solo los registros con Estado: Abierta y Usuario creador: PEPITO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por LeopoldoTaylhardat (2 intervenciones) el 17/04/2020 16:31:55
Saludos...

Tienes que encerrar las literales entre apóstrofos....

where.... $Estado = 'Abierta' , $User_Cre = 'PEPITO'

ejemplo:

$Estado = 'Abierta' , $User_Cre = 'PEPITO'

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por Alejandro (14 intervenciones) el 17/04/2020 18:40:54
El valor de las variables va cambiando segun el formulario y no siempre las mismas variables tienen valor. En el ejemplo eran esas dos pero también pueden ser Null y ser otras variables las que tengan información.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 111
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por Javier (45 intervenciones) el 17/04/2020 22:49:01
Si mal no entiendo, tendrías varias combinaciones en el WHERE, lo que veo en tu consulta es que al utilizar OR estas llamando a cualquier combinación que se cumpla, es decir, tomando parte de tu codigo, tienes algo así.

1
(Fec_Alta >= '$Fec_Inic'  and Fec_Alta <=  '$Fec_Fin')
en esta parte llamas a los registros que cumplen el rango de fechas

OR

1
User_Com = '$User_Cre'
Aqui llamas los registros que cumplen con el usuario indicado

OR

1
Orig = '$Orig'
Aqui llamas a los registros que cumplen esta condición

por tanto en la consulta traes todos los registros que cumplen las 3 condiciones, cuando tu solo quieres, posiblemente, solo las que cumplen un rango de fechas, por lo que creo debes especificar mejor tu WHERE, por ejemplo

1
2
where
((Fec_Alta >= '$Fec_Inic'  and Fec_Alta <=  '$Fec_Fin') AND (User_Cre = '$User'  OR User_Com = '$User'))
Aqui por ejemplo solo traes los registros que cumplen con el rango de fechas y el usuario indicado

Si mal no entiendo, por ahí va el detalle que tienes, en pocas palabras creo estas empleando mal el OR en tu consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Busqueda

Publicado por Alejandro (14 intervenciones) el 20/04/2020 12:40:11
¿Y para hacerlo metiendo todas mis variables?

Porque la cosa es que a la consulta siempre van a ir todas las variables, tengan valor o sean null
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar