![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
Доброй ночи. Вот уже третью ночь не могу спать нормально и мучает меня одна задача, которую я придумал сам для себя.
Введение: функционал как на сайте http://ogoloda.li/search, а именно мы выбираем список продуктов которые у нас есть и нам отображаются рецепты. Я не знаю как конкретно реализовано на данном сайте эта функция и никакого отношения не имею к этому ресурсу. Условия: 1. нету ajax 2. для получения рецептов в базу можно послать только 1 запрос 3. создание временных таблиц нежелательно 4. Структура таблиц может быть любой Как я вижу данную структуру (у вас может быть своя): Таблица 1 - таблица с ингредиентами Таблица 2 - таблица с рецептами Таблица 3 - связывающая таблица Таблицу 1 и Таблицу 2 P.S. Запрос я так и не придумал и не факт что такой запрос можно составить, но что-то мне подсказывает, что решение есть у этой задачи |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 1 Всего: 60 |
Привет, надо начать со структуры вы ее придумали ?
здесь более полный мой ответ: Этот ответ добавлен с нового Винграда - http://vingrad.com Это сообщение отредактировал(а) Wowa - 1.9.2013, 12:17 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
||||
|
||||
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
я не совсем понял, а если в рецепте есть еще ингредиенты помимо 1,23,44,66 то такой же рецепт показывать не нужно, а при данном запросе он покажет такой рецепт p.s. вообще привязываться к этому сайту не нужно и повторять структуру, вопрос больше теоретический чем практичекий Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 14 Всего: 386 |
CyberPulse, Что за проблема-то? В такой комбинации таблиц получается долго и мутно.
Таблицы рецепты - recipe[id,Name,Description], ингридиенты ingredient[id,Name,Description], связь links[id,rId,iId] ключики тривиальны и неинтересны пришел набор ингридиентов в виде массива ID шек (таблица ingredient, получается, не нужна ;) ) величиной , к примеру, 5 штук.
? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
я так понял, сколько ингредиентов столько и джойнов?
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| Sanchezzz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 1 Всего: 60 |
Не че страшного зато есть база отчего оттолкнутся.
Лучше тогда условия перебрать AND AND чем большое количество JOIN делать, скорее всего быстрее будет. -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 14 Всего: 386 |
Для такой организации таблиц - да. Если в таблицу рецептов вставить поле с перечислением всех ингридиентов через запятую (отсортированные по возрастанию ID), то для ЭТОЙ задачи получится простой запрос. Нужно понять, какие задачи решаются и для них (задач) смастерить правильную структура данных. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
мне кажется это не очень правильная структура базы Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
Способ от ksnk понравился, единственное не нравится изменяющийся кол-во джойнов, может есть еще какие идеи?
задача - это составить красивый запрос с красивой структурой базы, на практике я понимаю что красиво не реализовать, либо пострадает производительность, потому задача - это сделать красиво Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
http://sqlfiddle.com/#!2/8f274/4 посмотрите что я делаю не так, выдает только один рецепт, хотя по ингредиентам подходит два
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
как то не работает этот запрос Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 14 Всего: 386 |
Вот сейчас по ингридиентам подходит два
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
А вот так тоже два рецепта, хотя должен быть один
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| CyberPulse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.7.2010 Где: Воронеж Репутация: нет Всего: нет |
результат запроса должен показать мне список рецептов, которые я могу приготовить из продуктов которые уже имеются
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |