|
| 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
| |
|
|