2010-10-04 3 views
2

Eсти таблицы данных из цветочного магазина, который выглядит какКак сделать этот запрос

CustomerID  Flower 

    John    peony 
    John    lily 
    John    Lotus 

    Mary    peony 
    Mary    lily 
    Mary    chrysanthemum 

    Lisa    chrysanthemum 
    Lisa    peony 
    Lisa    kapok 

enter code here 

Я хотел бы найти идентификатор этих клиентов, которые покупают одни и те же п цветы. Например, в приведенной выше таблице для пионов и лилии покупатели, которые покупают оба из них (n = 2, для этого случая), - это Джон и Мэри.

Я не могу найти инструкцию SQL для выполнения вышеуказанного запроса. Пожалуйста помоги. Благодаря

ответ

0

Выберите идентификатор клиента, цветок из [yourtable], где цветок = «пион» или «лилия»

вы хотите это быть динамичным?

то, возможно, сделать хранимую процедуру с переменными. Подробнее о sp's here

0

Как насчет самостоятельного присоединения?

SELECT 
    y.CustomerID 
FROM 
    YourTable y 
JOIN 
    YourTable y2 
ON 
    y.CustomerID = y2.CustomerId 
WHERE 
    y.Flower = "Lily" 
AND 
    y2.Flower = "Lotus" 
0

Соединитесь с самим собой.

SELECT a.CustomerID, b.CustomerID, a.Flower FROM flowertable a, flowertable b WHERE a.Flower = b.Flower 
+0

Это будет возвращать 'Джон | Мэри | Лили, он хочет вернуть что-то вроде «Джон» | лилия и пион – cypher

0

вам нужно что-то вроде этого

select distinct(CustomerID) from mytable 
where flower in 
(select distinct(flower) from mytable group by flower having count(flower) = 2) 

вы можете заменить на любой номер, который вы хотите!

0

Я хотел бы попробовать есть пункт, который будет только сообщать цветы, которые имеют более чем один отдельный покупатель:

select a.customerid, a.flower 
from yourtable a 
where exists 
    (select 'x' 
    from yourtable b 
    where b.customerid <> a.customerid 
    and b.flower = a.flower) 
Смежные вопросы