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

  • Автор темы Автор темы Selforg
  • Дата начала Дата начала

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

Подскажите в какую сторону думать??
 
[SQL]
SELECT id_tovar FROM periods WHERE period='2006-08-01' AND period='2007-02-01' GROUP BY id_tovar
[/SQL]
 
Автор оригинала: 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), то у соотвествующих ид_товар не должно быть таких записей...
 
Selforg, мозг стоит включать по утрам.

use NOT, Luke. :-)
 
Как вариант можно так
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'

)

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