Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer
Tips > SQL

Tabeller och SQL fråga för omröstning i MySQL

Detta kan ni använda när ni bygger en omröstningsfunktion.
Koden ska fungera i dom flesta databaser. Inte i Oracle då, där använder man || för att slå ihop flera strängar.


SQL fråga för att skapa tabellerna


CREATE TABLE poll_questions (

    id INT UNSIGNED NOT NULL AUTO_INCREMENT,

    question VARCHAR(512),

    date_from DATE,

    date_to DATE,

    PRIMARY KEY(id)

);



CREATE TABLE poll_answers (

    id INT UNSIGNED NOT NULL AUTO_INCREMENT,

    question_id INT UNSIGNED,

    answer VARCHAR(100),

    votes INT UNSIGNED DEFAULT 0,

    PRIMARY KEY(id)

);


SQL fråga som returnerar
 * Frågan
 * Svarsalternativ
 * Totalt antal röster / fråga
 * Antal röster / svarsalternativ
 * Röstningsresultat i procent


SELECT

    q.id question_id,

    q.question,

    a.id answer_id,

    a.answer,

    (

        SELECT

            SUM(votes)

        FROM

            poll_answers a

        WHERE

            a.question_id = q.id

        LIMIT 1

       

    ) total_votes_per_question,

    (

        SELECT

            votes

        FROM

            poll_answers a

        WHERE

            a.question_id = q.id

            AND a.id = answer_id

        LIMIT 1

    ) votes_per_answer,

    (

        SELECT

            CONCAT(ROUND((votes /  total_votes_per_question) * 100),'%')

        FROM

            poll_answers a

        WHERE

            a.question_id = q.id

            AND a.id = answer_id

        LIMIT 1

    ) vote_percentage_per_answer

FROM

    poll_questions q,

    poll_answers a

WHERE

    a.question_id = q.id

Detta tips skapades 2007-12-14 15:36:31 av chrillemeter. Det har lästs 437 gånger. ||

Kommentarer

Timmie sa den 14 december 2007 kl 18:52:
Fungerar det till alla databaser? har aldrig stött på CONCAT i MySQL förut.
chrillemeter sa den 14 december 2007 kl 19:29:
Ska fungera i de flesta databaser. Inte Oracle då, där använder man || för att sätta ihop två eller flera strängar.
Timmie sa den 14 december 2007 kl 21:53:
Okej okej tack, såg nu också att rubriken var med MySQL ;)
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy