Comunidad de diseño web y desarrollo en internet online

Ayuda consulta mysql

Citar            
MensajeEscrito el 19 Feb 2014 09:39 pm
Hola, tengo una tabla con los siguientes datos:



ID_TABLA ID_OTRA VALOR_CADENA VALOR_NUMERO
________________________________________________________________
1 1 windows xp (null)
2 1 windows 7 (null)
1 3 (null) 3
3 1 linux (null)
1 4 (null) 4

quiero hacer una consulta en la que me salgan los ID_TABLA que se cumplan las siguientes condiciones:
(ID_OTRA=1 y VALOR_CADENA like "%windows%") y también (ID_OTRA=3 y VALOR_NUMERO = 3)

quiero que cumpla las dos por lo que me debería salir el ID_TABLA 1 solamente...

pero no consigo hacerlo correctamente....

Alguien podría ayudarme.

Muchas gracias.

Por robrcm

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 20 Feb 2014 01:00 pm
Pues...

Código MySQL :

SELECT * FROM `tabla` WHERE
(`ID_OTRA` IN (1,3)) AND
`VALOR_CADENA` LIKE '%windows%') AND
(`VALOR_NUMERO` = 3);

O sea, lo que has escrito en castellano, lo pones en inglés y ya está ;).
Aunque puesto como lo pones, no es posible que te devuelva el registro con ID_TABLA = 1 puesto que ese registro no cumple con la condición "(`VALOR_NUMERO` = 3)" (NULL no es igual a 3).
Así que me temo que tendrás que formular mejor la pregunta que quieres hacerle a la base de datos.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 20 Feb 2014 01:19 pm
exacto, eso no funciona como bien dices, más que nada por que no hay ninguna linea que cumplan los dos requisitos. Al final lo he apañado de la siguiente forma:

Código MySQL :

SELECT distinct a.id_tabla
FROM tabla a
INNER JOIN tabla b
ON a.id_tabla = b.id_tabla
where  a.id_otra=1 and a.valor_cadena like "%windows%"
and b.id_atributo=3 and b.valor_numero=3


Muchas gracias

Un saludo

Por robrcm

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 20 Feb 2014 03:08 pm
No olvides poner paréntesis para encerrar las expresiones para que quede claro cuál es el orden de precedencia deseado (además es más claro de leer).

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.