SQL - SubConsulta "AND"

   
Vista:

SubConsulta "AND"

Publicado por Rugal (2 intervenciones) el 01/02/2010 21:49:38
Hola que tal,

Espero alguien me pueda ayudar. Tengo dos tablas:

_Tabla1: Productos
_Tabla2: Atributos de los productos

Tengo la siguiente consulta:

SELECT * FROM _Tabla1 WHERE prod_ID IN (SELECT atrA_ProdID FROM _Tabla2 WHERE (atrA_Nombre='Bluetooth' AND atrA_Valor='Si') AND (atrA_Nombre='Color' AND atrA_Valor='Negro'))

Esta consulta NO me arroja ningún resultado, siendo que existe al menos un producto con 'Bluetooth' y en color 'Negro', deberia arrojar los datos de ese producto que tiene 'Bluetooth' y es de color negro. Importante: no pretendo utilizar el operador "OR", necesito utilizar "AND" para que obtener solo resultados donde AMBAS caracteristicas sean parte de ese producto.

La relación que utilizo entre las tablas es el ID del producto (en _Talba1 es prod_ID y en _Tabla2 es atrA_ProdID). La relación está correcta y tal vez algo me esté fallando en la consulta, tal vez exista alguna otra forma más eficiente para hacerla.

En otro Foro me recomendaron usar OR (dado que un campo no tiene dos valores al mismo tiempo) en lugar de AND, de la siguiente forma:

SELECT * FROM _Tabla1 WHERE prod_ID IN (SELECT atrA_ProdID FROM _Tabla2 WHERE (atrA_Nombre='Bluetooth' AND atrA_Valor='Si') OR (atrA_Nombre='Color' AND atrA_Valor='N') )

Lo intenté, aunque precisamente lo que necesito es mostrar sólo los productos que cumplan con todas las caracteristicas, es decir, en este caso, solo los que tengan Bluetooth y sean tambien de color negro, y no que tengan alguna de ellas, por ejemplo que tenga Bluetooth pero sea de otro color, estos últimos resultados no me servirian.

¿Cómo podría lograr esto? Me podrias poner un ejemplo?

Volviendo a la consulta original, cómo puedo hacerlo con JOIN, si es que funciona mejor con JOIN?

Ojalá alguien me pueda orientar.

Saludos!
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 roger

RE:SubConsulta

Publicado por roger (93 intervenciones) el 02/02/2010 00:05:15
SELECT * FROM _Tabla1 WHERE exists (SELECT atrA_ProdID FROM _Tabla2 WHERE atrA_Nombre='Bluetooth' AND atrA_Valor='Si' and atrA_ProdID = prod_ID)
AND Exists(SELECT atrA_ProdID FROM _Tabla2 WHERE atrA_Nombre='Bluetooth' AND atrA_Valor='Si' AND atrA_ProdID = prod_ID )
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

RE:SubConsulta

Publicado por Rugal (2 intervenciones) el 02/02/2010 00:40:44
Muchas gracias funciona perfécto.

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