Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL: Связывание двух таблиц по надобности 
:(
    Опции темы
Akina
Дата 10.3.2010, 18:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(krinart @  10.3.2010,  19:36 Найти цитируемый пост)
Если я напишу код
Код

SELECT * FROM tours t INNER JOIN tour_hotel th ON t.tourID=th.tourID
WHERE th.param=2
GROUP BY t.tourID

То получу просто связки тур-отель, где отель попадает под нужный критерий.  Но совсем не обязательно, что так произойдёт со всеми отелями в данном туре. 
Мне необходимо найти способ, чтобы проверить ровно столько отелей, сколько их в туре. И только в том случае, если все отели попадают под данный критерий - тогда получится, что весь тур попадает под этот критерий.

Стоп. Не знаю как тебе, а мне это кажется полной ахинеей. Ты этих двоих по-любому поселишь только в один отель, а не во все сразу, не так ли? а если так - не пофиг тебе, что в другом отеле, связанном с этим туром, есть только одиночные места?

Цитата(krinart @  10.3.2010,  19:36 Найти цитируемый пост)
Есть две таблицы, связанные отношением один-ко-многим. Пусть в первой таблице только одно поле a. Во второй таблице два поля: a и b. Необходимо найти такие a, у которых все значения b попадают под некий критерий. Как это сделать? И как посчитать количество таких строк в таблице a ? 

А что тут сложного? Подзапросом получаем distinct a из первой таблицы, связав её со второй и отобрав записи, для которых t2.b НЕ соответствует критериям, а основным запросом выбираем все записи из t1, которые t1.a not in подзапрос.
Что же до посчитать количество - тупо count по первой таблице минус count по подзапросу.
Конечно, всё это в предположении, что данные в таблице напротиворечивы и подсистема целостности на высоте.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
krinart
Дата 10.3.2010, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 10.4.2008
Где: Донецк

Репутация: нет
Всего: нет



Цитата(Fortop @  10.3.2010,  18:52 Найти цитируемый пост)
А в честь чего все?

А как двое людей поедут отдыхать в отель, в котором нет возможности проживания вдвоём?
Это происходит так - человек выбирает условия, которые хочет видеть в туре. Соответственно, система должна отобрать туры, в которых все отели сюда подходят. Например, человек хочет, чтобы отели были пятизвёздочные, или питание было All Inclusive. Вот и нужно, чтобы отели соответствовали этим критериям.


PM MAIL ICQ   Вверх
Fortop
Дата 10.3.2010, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



Цитата(krinart @  10.3.2010,  17:58 Найти цитируемый пост)
А как двое людей поедут отдыхать в отель, в котором нет возможности проживания вдвоём?

Зачем ВСЕ?

Перечитай вот это
Цитата(Akina @  10.3.2010,  17:55 Найти цитируемый пост)
ы этих двоих по-любому поселишь только в один отель, а не во все сразу, не так ли?




--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
krinart
Дата 10.3.2010, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 10.4.2008
Где: Донецк

Репутация: нет
Всего: нет



Цитата(Akina @  10.3.2010,  18:55 Найти цитируемый пост)
Стоп. Не знаю как тебе, а мне это кажется полной ахинеей. Ты этих двоих по-любому поселишь только в один отель, а не во все сразу, не так ли? а если так - не пофиг тебе, что в другом отеле, связанном с этим туром, есть только одиночные места?

Нет, потому что бывает так, что, например, продолжительность тура - 14 дней. Из них 10 дней в одном городе(отеле), а оставшиеся 4 - в другом.


Цитата(Akina @  10.3.2010,  18:55 Найти цитируемый пост)
А что тут сложного? Подзапросом получаем distinct a из первой таблицы, связав её со второй и отобрав записи, для которых t2.b НЕ соответствует критериям, а основным запросом выбираем все записи из t1, которые t1.a not in подзапрос.Что же до посчитать количество - тупо count по первой таблице минус count по подзапросу.Конечно, всё это в предположении, что данные в таблице напротиворечивы и подсистема целостности на высоте.

Спасибо за толчок в нужную сторону. Обязательно попробую. Сегодня уже врядли успею, а завтра обязательно отпишусь о результатах
PM MAIL ICQ   Вверх
Fortop
Дата 10.3.2010, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



Цитата(krinart @  10.3.2010,  18:02 Найти цитируемый пост)
Из них 10 дней в одном городе(отеле), а оставшиеся 4 - в другом.

Т.е. вариантов, когда в туре есть 5ть отелей, но люди весь тур живут в одном отеле - быть не может?
Или может?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
krinart
Дата 10.3.2010, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 10.4.2008
Где: Донецк

Репутация: нет
Всего: нет



Цитата(Fortop @  10.3.2010,  19:06 Найти цитируемый пост)
Т.е. вариантов, когда в туре есть 5ть отелей, но люди весь тур живут в одном отеле - быть не может?Или может?

Нет, конечно. У них за это проживание деньги заплачены. Они заранее знают, где и сколько дней проведут. 5 - это, конечно, перебор. Пока только 1 и 2 видел. 

А вообще по такой схеме работают все без исключения тур-операторы и турфирмы. Заранее составляются туры, с четкими условиями(питание, проживание, количество взрослых, детей, даты и т.д.), а человек приходит и выбирает из готового то, что ему подходит.
PM MAIL ICQ   Вверх
Fortop
Дата 10.3.2010, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



Еще раз повторю вопрос.
Есть ли туры, где можно выбрать отель проживания на все время тура?
Или такого нет?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
krinart
Дата 10.3.2010, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 10.4.2008
Где: Донецк

Репутация: нет
Всего: нет



Fortop, Есть туры, с которым связан только один отель. Тогда и проживание за всё время тура проходит только в одном отеле. Сколько в туре отелей, в стольких люди и живут. Тур это и есть связка таблицы tours, где хранится основная информация о туре, и таблицы tour_hotel, где хранится информация о проживании в отеле(ях)
PM MAIL ICQ   Вверх
Akina
Дата 10.3.2010, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(krinart @  10.3.2010,  20:02 Найти цитируемый пост)
бывает так, что, например, продолжительность тура - 14 дней. Из них 10 дней в одном городе(отеле), а оставшиеся 4 - в другом.

Могу сказать однозначно, что уже даже мне понятно, что тебе нужно, а тебе самому всё ещё нет - не на уровне ощущений и слов, а в чётких алгоритмических терминах. Хотя бы потому, что ты удручающе регулярно месишь воедино два принципиально разных условия - последовательное и параллельное проживание.
Думаю, есть смысл отложить программирование и начать с того, с чего и положено начинать - с подробного техзадания на программирование.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0828 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.