
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
05.02.2014, 01:34:37
|
|||
|---|---|---|---|
|
|||
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
Привет! Мучаюсь третий день подряд. Схема обычная. -------------------------------- 4 таблицы: табличка "курсы": id, title 1 Лётные курсы 2 Медицинские курсы 3 Английский курсы табличка "группы свойств": id, title 1 Время проведения 2 Обед 3 Город табличка "свойства" id, groupID, title 1 1 Утро 2 1 Вечер 3 2 Обед платный 4 2 Обеда бесплатный 5 3 Москва 6 3 Питер табличка связей: courseID, groupID, varID 1 1 1 1 2 3 1 3 4 и т.д. Иными словами, курсу может соответствовать любой параметр. --------------------------------- Такой запрос нужен: 1. сколько каждому из 6 параметров соответствует курсов, в которых есть обед. 2. сколько каждому из 6 параметров соответствует курсов, в которых есть обед и которые проходят утром. Известно, что при поиске в каждой группе параметров может быть только один выбранный параметр (радио), то есть или утро или вечер, но не вместе. Получается поиск кол-ва курсов во всех параметрах с учётом уточняющих параметров. Это делается для поиска курсов по шагам. Получается древовидный поиск. Укажите дорогу, куда идти. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 07:47:25
|
|||
|---|---|---|---|
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
wolfandman табличка связей: courseID, groupID, varID 1 1 1 1 2 3 1 3 4Выделенное объясните. желательно всю строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 11:31:15
|
|||
|---|---|---|---|
|
|||
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
tanglir, конечно я допустил ошибку. Извините пожалуйста! Вот как надо: Код: plaintext 1. 1 | 1 | 1 1 | 2 | 3 1 | 2 | 4 Я хотел сказать, что Лётный курс занимается утром и предоставляет как платный обед, так и бесплатный обед. groupID - группа свойств - я её ввёл по сути только для поиска. Знаю, что может пригодиться, но пока не знаю где. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 12:21:20
|
|||
|---|---|---|---|
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
wolfandmanВот как надо: Код: plaintext 1. 1 | 1 | 1 1 | 2 | 3 1 | 2 | 4 Я хотел сказать, что Лётный курс занимается утром и предоставляет как платный обед, так и бесплатный обед.Ну это понятно. Но тогда в чём заключается вопрос:wolfandmanсколько каждому из 6 параметров соответствует курсов, в которых есть обед.? Ведь "есть обед" - это тоже параметр? Или именно это и имеется в виду "для каждого свойства найти все курсы, которые: а)имеют это свойство И б)на них есть обед"? То есть курсы с обедом в результате будут всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 12:29:50
|
|||
|---|---|---|---|
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
Если так, то это баянистая задача поиска по EAV. Например так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Выделенный кусок - поиск курсов, имеющих ровно N параметров a1...aN. Например, для случая "бесплатный обед" N=1, a1=3. Для случая "обед" N=1, a1=4. Для случая "любой обед" N=2, a1=3, a2=4. Думаю, идея ясна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 13:42:29
|
|||
|---|---|---|---|
|
|||
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
tanglir, вы правильно поняли. Ваш код работает! Большое вам спасибо! Join(Selec...) t0 - Это фантастика для меня )) Надо конечно поизучать ещё SQL... Только вот ещё вопрос. Дело в том, что поиск я организовываю через Sphinxql, то нужно эти места: автор where t0.varID in (13,1,11,5,9,10) group by 1 having count(*)=6 сделать меняемыми снаружи. Вы представляете как это можно сделать? Скорее всего придётся отойти от вида Join (Select...) t0. Как можно это обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 16:55:42
|
|||
|---|---|---|---|
|
|||
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
Mysql поддерживает переменные пользователя? Можно ли составит запрос таким образом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 17:07:41
|
|||
|---|---|---|---|
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
wolfandmanMysql поддерживает переменные пользователя?Есть переменные и есть parameter markers . Но ни то, ни другое не позволяет передать в IN несколько значений, насколько я в курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 17:15:19
|
|||
|---|---|---|---|
|
|||
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
А что же тогда делать? Можно ли сделать этот запрос как-то иначе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.02.2014, 17:42:12
|
|||
|---|---|---|---|
Таблица связей, считающая себя и исключающая себя |
|||
|
#18+
wolfandmanА что же тогда делать?Можно собрать запрос конкатенацией из фрагментов непосредственно перед выполнением. В некоторых библиотеках/компонентах доступа для этого есть готовые средства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1835271]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 338ms |

| 0 / 0 |
