Mysql, valor en "cero"

Hola pmrivas, a ver si me puedes ayudar con esta pregunta:
Necesito, que a través de un select, me devuelva un valor, independiente que sea nulo o vacío, ej: tengo mi tabla1 con los sgtes valores:
tabla1
|pres|valor|
|01 |P001 |
|02 |P002 |
y yo le hago la sgte consulta:
Select valor From tabla1 WHERE pres='01', y me arroja:
|valor|
|P001 |
ahora, si yo quiero hacerle la sgte consulta:
Select valor From tabla1 WHERE pres='01' or pres='03', me arroja:
|valor|
|P001 |
y lo que yo necesito es que me lanze un valor en "cero":
|valor|
|P001 |
|0 |
Estuve averiguando, y lo que necesito es hacer un procedimiento almacenado que lo hace la version 5.0 (que esta en Beta), pero yo tengo la BD en la version 4.1.1
He probado con la función If, pero igual me arroja el resultado anterior
¿habra alguna funcion que realize lo que yo quiero?
Bueno, esperando a que quede claro, saludos, Kamilon.
Respuesta
1
Si a una base de datos le decís: Traeme los registros que tengan el campo pres en 01 o el campo pres en 03, te va a responder con p001, porque es lo que le estas diciendo!...
Ahora, lo que vos estas queriendo no es eso, sino otra cosa, y para eso te doy 2 alternativas:
1) Hacer 1 llamada por cada consulta (es una opción fácil pero imagina que desde el php sale una orden a la mysql por cada requerimiento), y cuando no encuentres registros, imprimir el 0.
2) Crear otra tabla con los '01','03' y hacer un LEFT JOIN, eso significa: Unir por la izquierda: vamos con el ejemplo:
Tabla1: como la tienes
Tabla2: código con sus registros:'01','03'
|codigo|
|01|
|03|
Y la consulta sería:
select valor from tabla2 LEFT JOIN tabla1 on codigo=pres
De esta manera mysql buscara PRIMERO los registros de la tabla2 y LUEGO los de tabla1.
Esta sería la forma de trabajo.
Saludos.
Pablo.
P.D. Excelente mail, muy bien detallado!
Gracias maestro!... me has mejorado mucho mi tiempo de consulta.
Lo que si, es que como tengo un LIKE entremedio de la consulta, tuve que hacer una consulta anidada, pero ya lo arregle, y me quedo la raja!
Bueno, nuevamente gracias...
Saludos y te agradece, Kamilon.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas