Sentencia con dos condiciones SQL

Iniciado por piterpalomitas, 3 Septiembre 2009, 14:39 PM

0 Miembros y 1 Visitante están viendo este tema.

piterpalomitas

buenas!

yo quisiera saber como puedo darle prioridad a una condicion sobre otra en una consulta SQL, es decir q mire si cumple la 2º condicion SOLO si cumple la 1º

gracias por adelantado ;D

Novlucker

¿AND? ... Si se cumple la primera, se cumple la segunda  :-\

Código (sql) [Seleccionar]
SELECT *
FROM Tabla
WHERE Condicion1 AND Condicion2
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

l337*

usando un IF dentro del query.

por ejemplo:

Código (sql) [Seleccionar]

select * from empleados where IF(salario > 3200,1,0) = 1


IF(condicion, valor si es verdadero, valor si es falso)

si salario es > a 3200 entonces kedaria : "where 1 = 1". aqui regresa campos.
si salario es < 3200 kedaria: "where 0 = 1". aqui no regresa nada.

espero haberme explicado.

saludz

piterpalomitas


sempus

piterpalomitas, dentro de una sentencia SQL en un gestor como MySQL puedes usar CASE o IF, solo que no sabria como responderte puntualmente porque no nos das mucha informacion...

puedes darte una idea leyendo aca
http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html

salu2
...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente...
Descarga openSUSE

Novlucker

Es que esta claro que puede usar IF y CASE, pero si vamos al caso ... que es lo que hace el AND? lo mismo para lo que busca, si vas a mirar de ejecutar la segunda condición en caso de que la primera sea cierta, entonces debes de hacer que se cumplan las dos condiciones, es como decir .. filtrar todos los que sean "altos", y luego decir, "y si es alto, los que midan más de 2 metros", sería lo mismo poner "los que sean altos y midan más de 2 metros", pero como digo, depende de cada caso :rolleyes:

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

sempus

AND lo que hace es evaluar el resultado de ambas condiciones y no el elegir verificar una - si se cumplio la otra

algo asi

2+2 > 4 AND 2+3>=5

como le dices a AND que ejecute la Expresion de su Derecha si la Expresion de su Izquierda es Verdadera?, nose puede, porque AND no hace eso, simplemente devuelve verdadero si ambas son verdaderas y devuelve falso si almenos una es falsa, y lo que quiere piterpalomitas es ejecutar X Expresion Logica, solo si la Primera es Verdadera, cosa que con AND es imposible de hacer

y lo que yo digo, es que con un CASE o con un IF dentro de la Expresion SQL esto se puede perfectamente

(posiblemente piterpalomitas  este pensando hacer algo mas complejo)

si me he confundido díganmelo xD
...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente...
Descarga openSUSE

Novlucker

Repito .. depende del caso! Mira la siguiente tabla

Personas
NombreEdad
Luis20
Carlos14
Damian20
Jose17

Como listarías los Nombres de quienes tienen 20 años de edad y cuyo nombre comienza por "D", es decir, en el caso de que su nombre comience por "D", entonces hay que ver si tienen 20 años, es decir, si se cumple la primera condición, entonces debe de cumplirse la segunda?

Código (sql) [Seleccionar]
SELECT Nombre
FROM Personas
WHERE Left(Nombre,1)='D' AND Edad=20


Pero como digo, depende de como este planteado el caso, en algún caso le servirá un IF, y en otros un simple AND

Saludos

P.D: igual creo que lo que busca es el IF XD
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein