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


0