Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Составление SQL-запросов > mysql объединение 2-х таблиц |
Автор: Date 13.9.2011, 16:27 |
Добрый день! Есть 2 таблицы, TimeRange и TimeControl TimeRange – это набор временных диапазонов. Структура такая ID int(11) TimeRange text TimeControl — в этой таблице храниться дата и время. А именно занятое время. Структура такая ID int(11) DATE date TimeID int(11) Вопрос такой: как можно получить свободное время в дне.. Например: 2011-09-16 - 1 2011-09-16 - NULL 2011-09-16 - 3 2011-09-16 - NULL 2011-09-16 - NULL 2011-09-16 - 6 2011-09-16 - 7 2011-09-16 - NULL 2011-09-16 - 9 2011-09-16 - NULL 2011-09-17 - 1 2011-09-17 - NULL и т.д. Сломал уже всю голову... заранее благодарю. |
Автор: Akina 13.9.2011, 18:11 |
Охренительный просто пример! Несколько записей из первой таблицы (все поля!!!). Несколько записей из второй таблицы. Желаемый результат НА ПРИВЕДЁННЫХ ДАННЫХ. Объяснение, почему он именно такой. При оформлении использовать моноширинный шрифт (или соотв. теги). |
Автор: AndreyIQ 15.9.2011, 10:22 | ||||||
Тоже сломал всю голову.
Вам уже было написано как надо оформить, если Вы не хотите нам помочь разобраться, то чего Вы от нас хотите? ![]() |
Автор: Zloxa 15.9.2011, 10:24 |
Date, неужели вы не понимаете, что ваша задача не понятна не только вам. Повторю то, что уже сказал Акина. Если желаете помощи, приведите исходные данные. Не менее трех строк для каждой таблицы. И приведите результат, ожидаемый на этих исходных данных. |
Автор: Akina 15.9.2011, 10:35 |
Date, проблема - у Вас. Поверьте на слово, всем, кроме Вас, глубоко плевать, решите Вы её или нет. Ваш отказ от предоставления запрошенной информации трактуется однозначно - Вам тоже плевать. |
Автор: Date 15.9.2011, 12:03 | ||||
постараюсь попонятнее объяснить: есть таблица TimeRange - эта таблица содержит диапазоны доступного времени (то есть времени которое можно выбрать), на пример с 8.00 до 9.00, с 9.00 до 10.00 и т.д. структура таблицы описана выше. Листинг:
TimeControl - в этой таблице занятое время на конкретную дату. то есть 2011-09-11, занятое время 1, 2 что соответствует записям "с 8.00 до 9.00" и "9.00 до 10.00" в таблице TimeRange. Листинг:
например: звонит клиент и говорит в какой день и на какое время хочет записаться, Администратор отмечает что в этот день и в это время придет этот клиент. далее надо вывести отчет что занято в дне |
Автор: Zloxa 15.9.2011, 12:22 | ||||
для этого примера хорош б был индекс на пару (date,TimeID). Если нужно не поодноу дню.. лучше заветси табличку с каленадрем, подставлять ее во второй запрос вместо подзапроса dt. Если табличку создать нельзя, можно выкрутиться вместо подзапроса dt сделать подзапрос (select distinct date from TimeRange). Но надо понимать что время выполнение запроса будет расти линейно к количеству записей. |
Автор: Date 15.9.2011, 15:02 | ||
Zloxa, то что надо! Добавлено через 19 секунд Спасибо большое! Добавлено через 14 минут и 25 секунд Zloxa, немного переделал запрос, теперь вообще то что надо...
Спасибо еще раз. |