/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MAX() i MySQL
Fra : Michael Jensen


Dato : 10-11-03 23:30

Hejsa

Jeg har følgende sql sætning som fungere uden problemer.

SELECT g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
g_sum_diff FROM ptsp_gymnasts WHERE g_cid='13' AND g_start_num_final!='0'
ORDER BY g_sum_final DESC, g_sum_diff DESC, g_name ASC

Hvis jeg så tilføjer: "MAX(g_diff_three, g_diff_four) AS g_high_diff" lige
før FROM i håb om den vil vælge den højeste af de to felter får jeg bare en
fejl.

Det jeg altså gerne vil er at have en højeste værdi af to til at være i den
valgte. I følge manualen burde MAX gøre tricket.

Begge værdier er i øvrigt float

Hvad kan der være galt?

--
Med venlig hilsen

Michael Jensen
Michael[SNABEL]ogj[PRIK]DK



 
 
Kim Emax (13-11-2003)
Kommentar
Fra : Kim Emax


Dato : 13-11-03 23:48

Michael Jensen wrote:

> Hvis jeg så tilføjer: "MAX(g_diff_three, g_diff_four) AS g_high_diff"
> lige før FROM i håb om den vil vælge den højeste af de to felter får
> jeg bare en fejl.

GROUP BY g_high_diff, hvis jeg ikke tager meget fejl.

--
Take Care
Kim Emax - master|minds: http://www.masterminds.dk
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



kim isaksen (16-11-2003)
Kommentar
Fra : kim isaksen


Dato : 16-11-03 15:22

"Michael Jensen" <michaelFJERN@ogjPRIK.dk> wrote in message
news:bop3g5$dpn$1@sunsite.dk...
> Hejsa
>
> Jeg har følgende sql sætning som fungere uden problemer.
>
> SELECT g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
> g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
> g_sum_diff FROM ptsp_gymnasts WHERE g_cid='13' AND g_start_num_final!='0'
> ORDER BY g_sum_final DESC, g_sum_diff DESC, g_name ASC
>

SELECT g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
g_sum_diff, MAX(g_diff_three, g_diff_four) AS g_high_diff
FROM ptsp_gymnasts
WHERE g_cid='13' AND g_start_num_final!='0'
GROUP BY g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
g_sum_diff
ORDER BY g_sum_final DESC, g_sum_diff DESC, g_name ASC


Prøv den her..!

mvh Kim Isaksen



Michael Jensen (18-11-2003)
Kommentar
Fra : Michael Jensen


Dato : 18-11-03 14:57

kim isaksen wrote:
> SELECT g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
> g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
> g_sum_diff, MAX(g_diff_three, g_diff_four) AS g_high_diff
> FROM ptsp_gymnasts
> WHERE g_cid='13' AND g_start_num_final!='0'
> GROUP BY g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
> g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
> g_sum_diff
> ORDER BY g_sum_final DESC, g_sum_diff DESC, g_name ASC
>
>
> Prøv den her..!

Jeg får stadig fejl ved MAX(

øvøv


--
Med venlig hilsen

Michael Jensen
Michael[SNABEL]ogj[PRIK]DK



Kristian Damm Jensen (17-11-2003)
Kommentar
Fra : Kristian Damm Jensen


Dato : 17-11-03 12:30

"Michael Jensen" <michaelFJERN@ogjPRIK.dk> skrev i en meddelelse
news:bop3g5$dpn$1@sunsite.dk...
> Hejsa
>
> Jeg har følgende sql sætning som fungere uden problemer.
>
> SELECT g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
> g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
> g_sum_diff FROM ptsp_gymnasts WHERE g_cid='13' AND
g_start_num_final!='0'
> ORDER BY g_sum_final DESC, g_sum_diff DESC, g_name ASC
>
> Hvis jeg så tilføjer: "MAX(g_diff_three, g_diff_four) AS
g_high_diff" lige
> før FROM i håb om den vil vælge den højeste af de to felter får jeg
bare en
> fejl.
>
> Det jeg altså gerne vil er at have en højeste værdi af to til at
være i den
> valgte. I følge manualen burde MAX gøre tricket.

Næppe. Jeg tror du har misforstået, hvad der står i manualen.

> Begge værdier er i øvrigt float

Det er underordnet.

> Hvad kan der være galt?

Max kan ikke finde den højeste værdi af to felter i samme række. Denne
findes (evt. ved at blive kombineret med en group by) den højeste
værdi der forekommer i samme felt i et sæt af rækker.

Hvad du ønsker at gøre kræver enten en case eller if-konstruktion som
jeg ikke er sikker på at mySQL understøtter, eller en fx noget i denne
retning:

SELECT g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
g_sum_diff,
g_diff_three AS g_diff_high
FROM ptsp_gymnasts
WHERE g_cid='13' AND g_start_num_final!='0'
AND g_diff_three > g_diff_four

UNION

SELECT g_id, g_name, g_club, g_country, g_diff_three, g_diff_four,
g_sum_three, g_sum_four, g_sum_final, g_diff_three + g_diff_four AS
g_sum_diff,
g_diff_four AS g_diff_high
FROM ptsp_gymnasts
WHERE g_cid='13' AND g_start_num_final!='0'
AND g_diff_three <= g_diff_four
ORDER BY g_sum_final DESC, g_sum_diff DESC, g_name ASC

--
Kristian Damm Jensen
damm (at) ofir (dot) dk



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste