Не получается составить запрос на выборку?

Selforg

Новичок
Не получается составить запрос на выборку?

Таблица periods (месяца, в кот. занят товар):

id        id_tovar         period
------------------------------------------------
1            5             2006-08-01
2            5             2006-09-01
------------------------------------------------
3            6             2007-01-01
4            6             2007-02-01
5            6             2006-09-01
------------------------------------------------
6            7             2006-09-01
7            7             2007-08-01
Нужно выбрать товары (ид_товар), которые свободны во ВСЕ нужные месяца (2006-08-01, 2007-02-01,....)??

То есть для (2006-08-01, 2007-02-01) нужно получить: 7

Подскажите в какую сторону думать??
 

HEm

Сетевой бобер
[SQL]
SELECT id_tovar FROM periods WHERE period='2006-08-01' AND period='2007-02-01' GROUP BY id_tovar
[/SQL]
 

Selforg

Новичок
Автор оригинала: HEm
[SQL]
SELECT id_tovar FROM periods WHERE period='2006-08-01' AND period='2007-02-01' GROUP BY id_tovar
[/SQL]
В таблице записаны даты, в которых товар ЗАНЯТ, а при запросе надо искать, где товар СВОБОДЕН!!!

то есть если мы ищем (2006-08-01, 2007-02-01), то у соотвествующих ид_товар не должно быть таких записей...
 

akd

dive now, work later
Команда форума
Selforg, мозг стоит включать по утрам.

use NOT, Luke. :)
 

Selforg

Новичок
Как вариант можно так
PHP:
SELECT id_tovar, GROUP_CONCAT( DISTINCT period
ORDER BY period DESC 
SEPARATOR ' ' ) 
FROM periods
GROUP BY id_tovar
ну а потом прийдется ЛАЙКОМ проверять наличие месяцев и выводить те где нет нужных месяцев..

Но хотелось бы обойтись без ЛАЙКА??

-~{}~ 31.08.06 11:24:

Всё победил я его:

PHP:
SELECT * FROM periods
WHERE id_tovar NOT 
IN ( 

SELECT DISTINCT ( id_tovar )
FROM periods
WHERE period = '2006-08-01'
OR period = '2007-02-01'

)
Хотя может можно как-нить оптимизировать??
 
Сверху