SQL - Consulta SQL

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 20 puestos en SQL (en relación al último mes)
Gráfica de SQL

Consulta SQL

Publicado por Cristian (1 intervención) el 14/01/2020 09:38:25
Buenos días,

Soy nuevo aquí y no se muy bien como funciona esto, pero tengo un problema con una consulta sql

Tengo que configurar un programa que genera etiquetas, y he configurado un formulario con dos campos.

Tiene que hacer lo siguiente:

- Si escribimos en el primer campo tiene que sacar los valores que sean igual a lo que está escrito ahí
- Si escribimos en el segundo campo tiene que sacar los valores que empiecen por lo que hemos escrito

El problema viene que si escribo en el primer campo y el segundo campo lo dejo en blanco me saca toda la tabla entera

Esta es la consulta que he hecho:

> select * from tabla where ean13='$CAMPO1' or descripcion LIKE '$CAMPO2%';

El problema es que si dejo el campo 2 vacío ejecutaría esto

> select * from tabla where ean13='prueba' or descripcion LIKE '%';

Por lo que saca toda la tabla

No se si me he explicado bien, si me podríais ayudar sería genial, muchas gracuas de antemano!
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: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta SQL

Publicado por Isaias (1921 intervenciones) el 14/01/2020 18:22:38
¿Cual es su motor de base de datos?
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

Consulta SQL

Publicado por Leonardo Josué (1173 intervenciones) el 14/01/2020 21:58:12
Hola Cristian:

El problema es que estás utilizando el operador OR y este implica que con una sola de las condiciones que se cumpla, sería verdadera.

Si tu primer campo SIEMPRE VA A TRAER UN VALOR, entonces basta con que cambies el OR por un AND y listo

1
> select * from tabla where ean13='$CAMPO1' AND descripcion LIKE '$CAMPO2%';

si tu primer campo PUEDE VENIR SIN VALOR entonces te convenía armar el WHERE de manera dinámica dependiendo de tus campos, es decir, algo así:

1
2
3
4
5
6
7
8
9
10
11
consulta = 'select * from tabla where '
 
SI campo1 tiene valor y campo2 tiene valor ENTONCES
   consulta =  consulta + 'ean13='$CAMPO1' AND descripcion LIKE '$CAMPO2%';
SI campo1 tiene valor y campo2 no tiene valor entonces
   consulta = consulta + 'ean13='$CAMPO1'';
 
SI campo1 tiene valor y campo2 no tiene valor entonces
   consulta =  consulta + 'descripcion LIKE '$CAMPO2%';

haz la prueba y nos comentas.

Saludos
Leo.
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