![]() |
|
Модераторы: skyboy |
![]()
|
|
| Гость |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 15.11.2003 Репутация: нет Всего: 2 |
Извините по поводу названия темы, не пришло ничего более умного в голову...
Вопрос такой: есть таблица movie_id | action | date в ней хранятся записи о фильмах взятых на прокат или возвращённых.. action = 1 фильм взяли на прокат action = 2 фильм вернули одним запросом нужно выбрать все фильмы которые вернули, вместе с датой когда его взяли и датой когда его вернули movie_id | lease_date | return_date |
|||
|
||||
| shilnik |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 377 Регистрация: 22.12.2003 Репутация: нет Всего: 1 |
Попробуй так (сам не пробовал):
Select a.movie_id, a.Date as lease_date, b.Date as return_date From table a inner join table b on (a.movie_id=b.movie_id) Where a.action = 1 and b.action = 2 |
|||
|
||||
| Гость |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 15.11.2003 Репутация: нет Всего: 2 |
Я сделал так:
Select a.id AS aid, a.movie_id, a.date as lease_date, b.date as return_date, b.id as bid FROM actions AS a INNER JOIN actions AS b on ( a.movie_id = b.movie_id) WHERE a.action = 1 and b.action = 2 ORDER BY a.movie_id получилось так aid |--------------------------------------------------------------------| bid 753 | 3202 | 2003-12-24 10:23:14 | 2003-12-11 16:22:05 | 816 | 812 | 3202 | 2003-12-11 16:20:00 | 2003-12-11 16:22:05 | 816 | 753 | 3202 | 2003-12-24 10:23:14 | 2003-12-24 10:23:51 | 759 | 812 | 3202 | 2003-12-11 16:20:00 | 2003-12-24 10:23:51 | 759 | а верный результат 753 | 3202 | 2003-12-24 10:23:14 | 2003-12-24 10:23:51 | 759 | 812 | 3202 | 2003-12-11 16:20:00 | 2003-12-11 16:22:05 | 816 | |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Не проще ли было делать два поля - отдали, приняли.
Просто при указанной структуре сделать требуемое очень сложно. Как я понимаю фильм может браться и возвращаться несколько раз. И определить, для какой сдачи в аренду какая запись о приеме соответствует крайне неприятная задача. Надо вычислять даты по порядку, вообщем крайне неприятная задачка. Лучше всего исправить структуру таблицы |
|||
|
||||
| Гость |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 15.11.2003 Репутация: нет Всего: 2 |
На самом деле action может иметь примерно 6-7 значений.
|
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 6 Всего: 39 |
Запрос вернёт тебе все фильмы которые вернули. P.S. Смысл в том, что inner join склеивает две таблицы так, что там оказываются всё что брали и всё что возвращали. left join найдёт все вернувшиеся и прибавит к ним дату изъятия если такая существует. Это сообщение отредактировал(а) Secandr - 6.1.2004, 11:37 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |