Mysql Выборка из базы по критериям

Artem_Paris

Новичок
Есть опрос.

Нужно дать возможность администратору просмотреть результаты по выбранным критериям, например:
администратор хочет посмотреть только ответы от мужчин в возрасте от 20-30 и от 31-40 лет.

То есть нужно учитывать ответы только от тех пользователей, которые в вопросе 4 отметили пункты "20-30" или "31-40" и в вопросе 3 указали "мужской".

Уже весь день голову ломаю на этом моменте. Подскажите плиз, как правильнее реализовать. Или может я выбрал невернуй способ хранения результатов?
 

Вложения

  • 2,6 KB Просмотры: 14

sakon

П..и.н..ок
Здесь не над запосом думать надо, а над структурой таблиц.
Пока это "огород".
 

WMix

герр M:)ller
Партнер клуба
я скажу наоборот, база написана правильно для создания вопросов и записи ответов
но вот прежде чем делать пойск, было бы неплохо перетрансформировать результаты опросов таким образом чтоб на каждого пользователя была одна строчка. (таблица на опрос к примеру)

на уровне запросов это тоже можно сделать при условии что у каждого опроса будет одинаковое число вопросов (или существует максимальное)

конкретно для этих данных (я не знаю деталей) яб выполнил такую команду
PHP:
create table result_vote1
select 
	r.user,
	1 as question1,
	(select answer from result r2 where r2.vote_id=r.vote_id and question=1 and r2.user = r.user) as answer1,
	2 as question2,
	(select answer from result r2 where r2.vote_id=r.vote_id and question=2 and r2.user = r.user limit 0,1) as answer2_1,
	(select answer from result r2 where r2.vote_id=r.vote_id and question=2 and r2.user = r.user limit 1,1) as answer2_2,
	(select answer from result r2 where r2.vote_id=r.vote_id and question=2 and r2.user = r.user limit 2,1) as answer2_3,
	3 as question3,
	(select answer from result r2 where r2.vote_id=r.vote_id and question=3 and r2.user = r.user) as answer3,
	4 as question4,
	(select answer from result r2 where r2.vote_id=r.vote_id and question=4 and r2.user = r.user) as answer4
from  result r
where r.vote_id = 1
group by r.user
а в новой табличке все просто
 
Сверху