Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Query(condicion multiple)

Estas en el tema de Query(condicion multiple) en el foro de SQL Server en Foros del Web. Buenas, resulta que tengo el siquiente query, ahi aparece lo que quiero en mi busqueda Código: -- los clientes que me compran bebidas pero no ...
  #1 (permalink)  
Antiguo 29/06/2011, 14:13
 
Fecha de Ingreso: junio-2011
Ubicación: Mexicali, BC
Mensajes: 17
Antigüedad: 12 años, 10 meses
Puntos: 0
Query(condicion multiple)

Buenas, resulta que tengo el siquiente query, ahi aparece lo que quiero en mi busqueda

Código:
-- los clientes que me compran bebidas pero no me compran especies
SELECT     distinct CompanyName, categoryName,  ContactName
FROM         Categories INNER JOIN
                      Products ON Categories.CategoryID = Products.CategoryID INNER JOIN
                      [Order Details] ON Products.ProductID = [Order Details].ProductID INNER JOIN
                      Orders ON [Order Details].OrderID = Orders.OrderID INNER JOIN
                      Customers ON Orders.CustomerID = Customers.CustomerID
where categoryname = 'beverages' and categoryname != 'condiments';
la idea esque aparezcan todos los clientes que compren bebidas pero que no aparezcan si tambien compran especies

en el resultado del query aparecen compañias que compraron bebidas pero al hacer un query nuevo con los que compran especies, aparecen tmb los del query anterior


gracias
  #2 (permalink)  
Antiguo 29/06/2011, 14:23
 
Fecha de Ingreso: junio-2011
Ubicación: Mexicali, BC
Mensajes: 17
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Query(condicion multiple)

este es otro query con el que nesecito ayuda


Código:
SELECT     distinct CompanyName, Categoryname, ContactName, country
FROM         Categories INNER JOIN
                      Products ON Categories.CategoryID = Products.CategoryID INNER JOIN
                      [Order Details] ON Products.ProductID = [Order Details].ProductID INNER JOIN
                      Orders ON [Order Details].OrderID = Orders.OrderID INNER JOIN
                      Customers ON Orders.CustomerID = Customers.CustomerID
WHERE categoryname = 'condiments' or categoryname = 'beverages';

en este aparecen los clientes que compran bebidas y especies, pero aparecen algunos que solamente compran o bebidas o especies, lo que yo busco esque solo aparezcan quienes hayan comprado ambas cosas
  #3 (permalink)  
Antiguo 29/06/2011, 15:06
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Query(condicion multiple)

La primera consulta podría ser algo así, pero desde luego es bastante grande.

La idea es que realizas dos subconsultas: en la primera tomas los clientes que han comprado de la categoria beverages y en la segunda, los clientes que han comprado de la categoría condiments y luego realizas una resta (EXCEPT) para quedarte con los que han comprado beverages pero no condiments.

Código SQL:
Ver original
  1. SELECT     DISTINCT   CompanyName, categoryName,  ContactName
  2. FROM         Categories INNER JOIN
  3.                       Products ON Categories.CategoryID = Products.CategoryID INNER JOIN
  4.                       [ORDER Details] ON Products.ProductID = [ORDER Details].ProductID INNER JOIN
  5.                       Orders ON [ORDER Details].OrderID = Orders.OrderID INNER JOIN
  6.                       Customers ON Orders.CustomerID = Customers.CustomerID
  7. WHERE categoryname = 'beverages'
  8. EXCEPT
  9.  
  10. SELECT     DISTINCT  ContactName
  11. FROM         Categories INNER JOIN
  12.                       Products ON Categories.CategoryID = Products.CategoryID INNER JOIN
  13.                       [ORDER Details] ON Products.ProductID = [ORDER Details].ProductID INNER JOIN
  14.                       Orders ON [ORDER Details].OrderID = Orders.OrderID INNER JOIN
  15.                       Customers ON Orders.CustomerID = Customers.CustomerID
  16. WHERE categoryname = 'condiments'

La segunda consulta sería igual pero usando INTERSECT en vez de EXCEPT
  #4 (permalink)  
Antiguo 29/06/2011, 16:01
 
Fecha de Ingreso: junio-2011
Ubicación: Mexicali, BC
Mensajes: 17
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Query(condicion multiple)

muchas gracias, en cuanto pueda lo hare, cualquier cosa edito esta respuesta.

saludos!

EDITO: me funciono perfecto, muchicimas gracias!.

Última edición por iPaNiiCx; 29/06/2011 a las 18:32

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:16.