|
|
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#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, 01:34:37 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#18+
wolfandman табличка связей: courseID, groupID, varID 1 1 1 1 2 3 1 3 4Выделенное объясните. желательно всю строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 07:47:25 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#18+
tanglir, конечно я допустил ошибку. Извините пожалуйста! Вот как надо: Код: plaintext 1. 1 | 1 | 1 1 | 2 | 3 1 | 2 | 4 Я хотел сказать, что Лётный курс занимается утром и предоставляет как платный обед, так и бесплатный обед. groupID - группа свойств - я её ввёл по сути только для поиска. Знаю, что может пригодиться, но пока не знаю где. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:31:15 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#18+
wolfandmanВот как надо: Код: plaintext 1. 1 | 1 | 1 1 | 2 | 3 1 | 2 | 4 Я хотел сказать, что Лётный курс занимается утром и предоставляет как платный обед, так и бесплатный обед.Ну это понятно. Но тогда в чём заключается вопрос:wolfandmanсколько каждому из 6 параметров соответствует курсов, в которых есть обед.? Ведь "есть обед" - это тоже параметр? Или именно это и имеется в виду "для каждого свойства найти все курсы, которые: а)имеют это свойство И б)на них есть обед"? То есть курсы с обедом в результате будут всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:21:20 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#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, 12:29:50 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#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, 13:42:29 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#18+
Mysql поддерживает переменные пользователя? Можно ли составит запрос таким образом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 16:55:42 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#18+
wolfandmanMysql поддерживает переменные пользователя?Есть переменные и есть parameter markers . Но ни то, ни другое не позволяет передать в IN несколько значений, насколько я в курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 17:07:41 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#18+
А что же тогда делать? Можно ли сделать этот запрос как-то иначе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 17:15:19 |
|
||
|
Таблица связей, считающая себя и исключающая себя
|
|||
|---|---|---|---|
|
#18+
wolfandmanА что же тогда делать?Можно собрать запрос конкатенацией из фрагментов непосредственно перед выполнением. В некоторых библиотеках/компонентах доступа для этого есть готовые средства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 17:42:12 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38549895&tid=1835271]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 317ms |

| 0 / 0 |
