powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хитро так сделать, чтобы восстановить отсутствующие значения для строк.
3 сообщений из 3, страница 1 из 1
Хитро так сделать, чтобы восстановить отсутствующие значения для строк.
    #39222975
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Релевантная ситуация.

Есть анкета. В ней вопросы и соответственно ответы Да/Нет (на самом деле там три типа ответов: чекбокс, радио, текст, но упрощённо Да/Нет). На анкету отвечает зарегистрированный пользователь.
Ответы записываются только с "Да".

Соответственно потом нужно вывести все результаты заполнения анкет по всем пользователям.

Структура
ank(aid, name)
questions(qid, title, aid, qorder)
answers(qid, uid, result)
users(uid, fio)

Из 10 вопросов, допустим пользователь отвечает на 7 "Да", а 3 - "Нет".
Соответственно в answers будет 7 записей.

При отображении нужно показать все 10 вопросов, соответствующие ответы и пользователя.

Первые два условия без проблем, а вот пользователь в пролёте окажется для 3х вопросов.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
    SELECT users.fio,
    FROM questions q
      INNER JOIN ank a  ON a.aid = q.aid  /* можно опустить, просто по задаче надо, но для примера не важно */
      LEFT JOIN answers an on an.qid = q.qid 
      LEFT JOIN users ON users.uid = an.uid
    WHERE a.aid = @aid
    GROUP BY regs.fio, q.qid
    ORDER BY regs.fio, q.orderby;



В принципе такое возможно?
...
Рейтинг: 0 / 0
Хитро так сделать, чтобы восстановить отсутствующие значения для строк.
    #39222976
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT users.fio, case when an.result is null then 'Нет' else 'Да' end as result
    FROM questions q
      INNER JOIN ank a  ON a.aid = q.aid  /* можно опустить, просто по задаче надо, но для примера не важно */
      LEFT JOIN answers an on an.qid = q.qid 
      LEFT JOIN users ON users.uid = an.uid
    WHERE a.aid = @aid
    GROUP BY regs.fio, q.qid
    ORDER BY regs.fio, q.orderby;
...
Рейтинг: 0 / 0
Хитро так сделать, чтобы восстановить отсутствующие значения для строк.
    #39223099
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Промешан_Релевантная ситуация.

Есть анкета. В ней вопросы и соответственно ответы Да/Нет (на самом деле там три типа ответов: чекбокс, радио, текст, но упрощённо Да/Нет). На анкету отвечает зарегистрированный пользователь.
Ответы записываются только с "Да".

Соответственно потом нужно вывести все результаты заполнения анкет по всем пользователям.

Структура
ank(aid, name)
questions(qid, title, aid, qorder)
answers(qid, uid, result)
users(uid, fio)

Из 10 вопросов, допустим пользователь отвечает на 7 "Да", а 3 - "Нет".
Соответственно в answers будет 7 записей.

При отображении нужно показать все 10 вопросов, соответствующие ответы и пользователя.

Первые два условия без проблем, а вот пользователь в пролёте окажется для 3х вопросов.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
    SELECT users.fio,
    FROM questions q
      INNER JOIN ank a  ON a.aid = q.aid  /* можно опустить, просто по задаче надо, но для примера не важно */
      LEFT JOIN answers an on an.qid = q.qid 
      LEFT JOIN users ON users.uid = an.uid
    WHERE a.aid = @aid
    GROUP BY regs.fio, q.qid
    ORDER BY regs.fio, q.orderby;




В принципе такое возможно?


да, возможно.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хитро так сделать, чтобы восстановить отсутствующие значения для строк.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]