2010-05-16 7 views
0

У меня есть таблица MySQL с этими столбцами:Как сделать этот запрос?

  • ID (автоинкрементным)
  • ID_BOOK (интермедиат)
  • ЦЕНА (двойной)
  • DATA (дата)

Я знаю два ID_BOOK значения, например, 1 и 2.

QUERY:

я должен извлечь все ЦЕНА (из ID_BOOK = 1 и ID_BOOK = 2), где DATA такой же!

Таблица Пример:

1 1 10.00 2010-05-16 

2 1 11.00 2010-05-15 

3 1 12.00 2010-05-14 

4 2 18.00 2010-05-16 

5 2 11.50 2010-05-15 

Результат Пример:

1 1 10.00 2010-05-16 

4 2 18.00 2010-05-16 

2 1 11.00 2010-05-15 

5 2 11.50 2010-05-15 

ID_BOOK = 2 не имеет 2010-05-14 так я прыгать его.

Большое вам спасибо!

+1

Пожалуйста, пост код написали до сих пор. Люди обычно не любят просто писать свой код для вас. –

+0

Является ли название 'DATA' намеренным? Это тип даты. Он должен быть назван в соответствии с тем, что он представляет, например, 'PURCHASE_DATE'. –

ответ

2

Я понял, как вы хотите получить результаты, и вам нужно будет заменить myTable фактическим названием вашей таблицы.

SELECT * 
FROM myTable 
WHERE DATA IN 
(
    SELECT 
     DATA 
    FROM myTable 
    GROUP BY 
     DATA 
    HAVING COUNT(*) > 1 
) 
ORDER BY 
    DATA DESC, 
    ID_BOOK, 
    ID 
0
select PURCHASE_DATE, PRICE from table group by PURCHASE_DATE 
+0

Вам нужно будет обернуть 'PRICE' в агрегатную функцию, чтобы это работало. Он также вернет строку с датой '2010-05-14', которую Дамиано хочет пропустить, поскольку есть только одна строка с этой датой. –

0

Это даст вам немного другой формат для результатов, но это может быть полезно:

Select 
t1.id as t1_id, t1.id_book as t1_id_book, t1.price as t1_price, t1.data as t1_data, 
t2.id as t2_id, t2.id_book as t2_id_book, t2.price as t2_price, t2.data as t2_data 
from table t1 
inner join table t2 on t1.data = t2.data 
and t1.id_book = 1 
and t2.id_book = 2 

Вы получите:

1 1 10.00 2010-05-16 4 2 18.00 2010-05-16 
2 1 11.00 2010-05-15 5 2 11.50 2010-05-15 
Смежные вопросы