Jag har en databas som ser ut såhär:
id - namn - link - sex - lag - bp - ml
bp & ml innehåller siffror som jag vill använda i en beräkning.
Dock blir mina uträkningar i PHP ganska avancerade, och jag undrar därför:
Finns det stöd i MySQL i att den kan beräkna saker direkt i systemet? (utan extern koppling).
Det jag "hoppas" på är att kunna göra en till kolumn som heter "total" och "snitt"... Och att total automatiskt lägger ihop bp + ml ..
Och att snitt då tar total / 2 ..
Det är klart att du kan göra allt i SQL - men risken är att det blir onödigt svårt och oöverblickbart. Är det det här du ska göra, som du beskriver i ditt senaste inlägg, så ska du inte fundera på triggers.
Du kan göra det med subqueries, men det är inte så übersexigt.
SELECT bp,
(SELECT sum(bp) FROM wp_rvb WHERE sex = 'K') as totalt,
(SELECT avg(bp) FROM wp_rvb WHERE sex = 'K') as snitt
FROM wp_rvb WHERE sex = 'K'
Ja - det är jag nog ..
Det jag är ute efter är att få ut 4 stycken olika uträkningar.
Uträkning 1:
SELECT bp FROM wp_rvb WHERE sex = 'K' ..
Addera ihop alla summor från bp, dela med antalet rader och sedan visa upp det..
Uträkning 2:
SELECT ml FROM wp_rvb WHERE sex = 'K' ..
Addera ihop alla summor från ml, dela med antalet rader och sedan visa upp det..
Uträkning 3:
SELECT bp FROM wp_rvb WHERE sex = 'T' ..
Addera ihop alla summor från bp, dela med antalet rader och sedan visa upp det..
Uträkning 4:
SELECT ml FROM wp_rvb WHERE sex = 'T' ..
Addera ihop alla summor från ml, dela med antalet rader och sedan visa upp det..
Den koden jag kör just nu (för att uthämta grunden är)
<?PHP
global $wpdb;
$sql_bp_k = "SELECT bp FROM `wp_rvb` WHERE `sex` = 'K'";
$comments = $wpdb->get_results($sql_bp_k);
echo $wpdb->num_rows . 'Rows Found';
foreach ($comments as $comment) {
echo $comment->bp;
echo " / ";
}
?>
Jag har nu gjort separata länkar till allting, så det är "fult" löst ..
Dock... hur frågar jag ut servern efter snittvärdet?
Säg som sagt att jag har kolumnerna id - namn - link - sex - lag - bp - ml
...
jag vill hämta ut de 10 bästa (med högst snittvärde på bp & ml).
Så..
SELECT * FROM wp_rvb ORDER BY (snittvärdet av bp&ml ihop) LIMIT 10
....
SELECT
sex,
Avg(bp) [BpMedel],
Avg(ml) [MlMedel]
FROM
wp_rvb
GROUP BY
sex
Ger en rad per sex med medelvärdena för bp och ml. Borde fixa problem 1-4.
SoulGod skrev:
jag vill hämta ut de 10 bästa (med högst snittvärde på bp & ml).
Så..
SELECT * FROM wp_rvb ORDER BY (snittvärdet av bp&ml ihop) LIMIT 10
....
Om du kan tänka dig att få ut en extra kolumn i resultatet med sorteringsvärdet så borde du kunna fixa detta i en enda fråga. Annars måste du eventuellt mellanlagra ovanstående i en temp-tabell först innan du ordnar om resultatet, men i princip:
SELECT
sex,
Avg(bp) [BpMedel],
Avg(ml) [MlMedel],
Avg(bp) + Avg(ml) [SortKol]
FROM
wp_rvb
GROUP BY
sex
ORDER BY
Avg(bp) + Avg(ml) DESC
LIMIT 10
Det är också möjligt att du kan ordna raderna efter denna summa utan att plocka ut den under SELECT.
132 ms totalt · 3 externa anrop · v20260731065814-full.b746b907