|
|
|
Ищу совет по оптимальному проектированию БД для вопросов и ответов анкеты
|
|||
|---|---|---|---|
|
#18+
Ситуация такая: 1) есть конструктор анкет, структура которых в последующем будет храниться в БД. Анкета состоит из вопросов, у которых есть 4 типа (простой, выбрать один вариант ответа, выбрать несколько вариантов ответа, и по типу таблицы). В связи с этим была создана просто таблица вопросов с полями: Id(A_I), AnkName, Questions, Type, Header(null default), Variants(null default). Если вариантов или вопросов несколько, разделяются "||". 2) по таблице вопросов строится анкета, ну тут понятно, просто выбираются все названия без повторений, и для выбранного выбираются все вопросы, и в соответствии с типом, строится html элемент для ввода ответов. Вроде бы все хорошо, но возникает проблема с хранением ответов, так как их необходимо связать. Будет вестись статистика по типу: сколько людей ответило так то на такой-то вопрос и так-то то на другой ... и т.д.. Если структура таблицы будет такой: Id(A_I), QuestionName, Answer, Date, AnkId, где AnkId например будет общим у всех ответов одной анкеты, т.е. при первом заполнении всем ответам он будет = 1, при втором =2 и т.д. То вот как тут сделать выборку опирающуюся на несколько строк своим условием? Что-то вроде "выбрать число всех строк, сгруппированных по AnkId где при одинаковом AnkId и конкретном значении Answer1 при Question1 ... AnswerN при QuestionN. " Такой же запрос невозможен? Может подскажете, как лучше изменить структуру БД? Заранее извиняюсь, если что не понятно объяснил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 14:08 |
|
||
|
Ищу совет по оптимальному проектированию БД для вопросов и ответов анкеты
|
|||
|---|---|---|---|
|
#18+
MortalArtТакой же запрос невозможен? Возможен. Только задание для него надо сформулировать точнее и не в "строках", а в терминах бизнес-объектов. Т.е., например, "сколько людей, на вопрос 1 дали ответ 1 И на вопрос 2 дали ответ 2". В этом случае запрос сводится к тривиальному group by + having + derived table. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 14:42 |
|
||
|
Ищу совет по оптимальному проектированию БД для вопросов и ответов анкеты
|
|||
|---|---|---|---|
|
#18+
MortalArt, Была уже такая ветка. Юзай поиск. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 14:52 |
|
||
|
Ищу совет по оптимальному проектированию БД для вопросов и ответов анкеты
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, спасибо за ответ. Под derived table имеется ввиду Select from select ? Т.е. получается что-то вроде Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 15:28 |
|
||
|
Ищу совет по оптимальному проектированию БД для вопросов и ответов анкеты
|
|||
|---|---|---|---|
|
#18+
MortalArtТ.е. получается что-то вроде Примерно так, только условия совершенно другие. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 17:43 |
|
||
|
Ищу совет по оптимальному проектированию БД для вопросов и ответов анкеты
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, а какие, вы не подскажите?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 17:59 |
|
||
|
Ищу совет по оптимальному проектированию БД для вопросов и ответов анкеты
|
|||
|---|---|---|---|
|
#18+
Хм, походу разобрался, может кому пригодиться, получилось вот-так: Код: plaintext Ну и проверку на принадлженость к названию анкеты не сложно так же в WHERE добавить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 19:51 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38358379&tid=1541147]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
151ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 263ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...