Avatar billede hp-power Nybegynder
07. december 2009 - 00:36 Der er 1 kommentar og
1 løsning

mysql data regning og sortering

hejsa har et problem jeg ikke helt ved hvordan jeg skal løse mest optimal.

jeg har en mysql med følgende felter i tabelen

navn
klub
afd1
afd2
afd3
afd4
afd5
adf6

afd. er point fra 0 -40 points. ( 0 gives hvis man ikke stiller op )

jeg skal have det udskrevet på en lidt sjov måde.
navn - klub - afd1 - 2 - 3 - 4 - 5 - 6 - X - Y

X = resultatet af afd1-6
Y = bedst ud af fire.

hvis der så er point lighed i Y så er det fleste køre afd. der tæller og derefter hvem der fik flest point i afd. 6

håber det er til at forstå
Avatar billede bauerdata Nybegynder
07. december 2009 - 14:59 #1
CREATE TABLE IF NOT EXISTS resultat (
    navn VARCHAR(50),
    klub VARCHAR(50),
    afd1 INTEGER,
    afd2 INTEGER,
    afd3 INTEGER,
    afd4 INTEGER,
    afd5 INTEGER,
    afd6 INTEGEr,
    PRIMARY KEY(navn,klub)
);
CREATE OR REPLACE VIEW afd AS
    SELECT navn, klub, afd1 as afd, 1 as val FROM resultat
UNION
    SELECT navn, klub, afd2 as afd, 2 as val FROM resultat
UNION
    SELECT navn, klub, afd3 as afd, 3 as val FROM resultat
UNION
    SELECT navn, klub, afd4 as afd, 4 as val FROM resultat
UNION
    SELECT navn, klub, afd5 as afd, 5 as val FROM resultat
UNION
    SELECT navn, klub, afd6 as afd, 6 as val FROM resultat;
CREATE OR REPLACE VIEW minafd AS
    SELECT afd.navn AS navn, afd.klub AS klub,afd.afd AS afd, afd.val AS val
    FROM afd
    WHERE (afd.navn, afd.klub, afd.afd) IN (
        SELECT a.navn AS navn, a.klub AS klub, Min(a.afd) AS afd
        FROM afd a
        GROUP BY a.navn, a.klub)
;
CREATE OR REPLACE VIEW minafd1 AS
SELECT a.navn AS navn, a.klub AS klub, a.val AS val, a.afd AS afd
FROM afd a, minafd m
WHERE m.navn = a.navn
  AND m.klub= a.klub
  AND m.val != a.val
;
CREATE OR REPLACE VIEW minafd2 AS
    SELECT afd.navn AS navn, afd.klub AS klub,afd.afd AS afd, afd.val AS val
    FROM afd
    WHERE (afd.navn, afd.klub, afd.afd) IN (
        SELECT a.navn AS navn, a.klub AS klub, Min(a.afd) AS afd
        FROM minafd1 a
        GROUP BY a.navn, a.klub)
;
CREATE OR REPLACE VIEW minafd3 AS
SELECT a.navn AS navn, a.klub AS klub, a.val AS val, a.afd AS afd
FROM afd a, minafd m, minafd2 m3
WHERE (m.navn = a.navn
  AND m.klub= a.klub
  AND m.val != a.val)
  and
    (m3.navn = a.navn
  AND m3.klub= a.klub
  AND m3.val != a.val)
;
CREATE OR REPLACE VIEW sumafd AS
SELECT klub, navn, SUM(afd) AS sum4afd
FROM minafd3
GROUP BY klub,navn;
SELECT
    a.Navn, "-",
    a.Klub, "-",
    a.Afd1, "-",
    a.Afd2, "-",
    a.Afd3, "-",
    a.Afd4, "-",
    a.Afd5, "-",
    a.Afd6, "-",
    a.Afd1 + a.Afd2 + a.Afd3 + a.Afd4 + a.Afd5 + a.Afd6 AS X,
    b.sum4afd AS Y
FROM resultat a, sumafd b
WHERE a.navn = b.navn
  AND a.klub = b.klub
;
Avatar billede bauerdata Nybegynder
08. december 2009 - 10:38 #2
View minafd og minafd2 skal ændres til

CREATE OR REPLACE VIEW minafd AS
    SELECT afd.navn AS navn, afd.klub AS klub,afd.afd AS afd, max(afd.val) AS val
    FROM afd
    WHERE (afd.navn, afd.klub, afd.afd) IN (
        SELECT a.navn AS navn, a.klub AS klub, Min(a.afd) AS afd
        FROM afd a
        GROUP BY a.navn, a.klub)
    GROUP BY navn, klub, afd
;

CREATE OR REPLACE VIEW minafd2 AS
    SELECT afd.navn AS navn, afd.klub AS klub,afd.afd AS afd, MIN(afd.val) AS val
    FROM afd
    WHERE (afd.navn, afd.klub, afd.afd) IN (
        SELECT a.navn AS navn, a.klub AS klub, Min(a.afd) AS afd
        FROM minafd1 a
        GROUP BY a.navn, a.klub)
    GROUP BY navn, klub, afd
;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester