I'm sorry if my question irrelevant. Because I'm not expert of mysql.
I have surveys in my website. If someone votes my survey, i want to show survey results to the voter.
Here is the DB Structure;
surveys
Table (Includes Survey Name Description and survey_id
)
survey_choices
Table (Includes Survey Chocies and related with survey_id
to Surveys Table)
I'm trying to calculate only visible survey choices %percentage.
If i have only 1 survey, it's calculating correct results. But if i have more than 1 survey, mysql calculating whole survey_vote_count
values of all table.
Here is my MySQL query;
SELECT
survey_vote_id, survey_vote_name, survey_vote_count, survey_id,
survey_vote_count * 100 / t.s AS survey_percentage
FROM survey_votes
CROSS JOIN (SELECT SUM(survey_vote_count) AS s FROM survey_votes) t
WHERE visibility = :visibility
AND survey_id = :surveyId
ORDER BY `survey_votes`.`order_id` ASC
How can i calculate for eg only survey_id = 1 and visibility = 1
%percentage = %100?
Any help will greatly appricated.
You should add the same condition to your cross join. At the moment, in your select you sum all survey_vote_count without the same where condition (visibility and survey_id.