私は、テーブルの平均化と結合について少し悩んでいます。
基本的に、MySQL データベースからデータを取得して、Highcharts を使用してさまざまな植物種の平均高さを表示したいと考えています。残念ながら、身長データと種名は別のテーブルに追加されるように設定されていました。
私はそれを機能させましたが、データをダウンロードしてExcelで平均を見つけると、表示されている数値とは異なるため、明らかに正しく行っていません. Excelで正しく実行していることを再確認したので、MySQLクエリが詰まっていることはほぼ確実です。
実際のテーブルにはたくさんのエントリがあるので、以下に例を示します。
現時点でのクエリは次のとおりです。
<?php
$result = mysql_query("
SELECT DISTINCT(plant_records.plant_id), ROUND(AVG(plant_records.height),2) as plant_average, plant_list.id, plant_list.plant_species
FROM plant_records
INNER JOIN plant_list
ON plant_records.plant_id=plant_list.id
GROUP BY plant_list.plant_species
") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
$xAxisValues[] = "'" . $row['plant_species'] . "'";
$AseriesValues[] = $row['plant_average'];
}
?>
私はそれを正しくやっていますか?このような結合を説明するいくつかの素晴らしいチュートリアルを見つけましたが、まだ混乱しています。私は彼らに参加する前に平均しているのか、それとも何か??
Records テーブルの「plant_id」は、List テーブルの「id」に対応します。
plant_records:
id plant_id date_recorded height
1 3 01/01/2013 0.2523123
2 1 02/01/2013 0.123
3 3 03/02/2013 0.446
4 3 04/03/2013 0.52
5 1 05/03/2013 0.3
6 2 06/03/2013 0.111
7 2 07/05/2013 0.30
8 4 08/05/2013 0.22564
9 1 09/05/2013 1.27
10 3 10/05/2013 1.8
植物リスト:
id registration_date contact_name plant_species plant_parent
1 01/01/2013 Dave ilex_prinos London_Holly
2 02/01/2013 Bill acer_saccharum Brighton_Maple
3 01/01/2013 Bob ilex_prinos London_Holly
4 04/01/2013 Bruno junip_communis Park_Juniper
編集: Excel を使用してデータを検索するあらゆる方法を試しました (たとえば、意図的に一意の ID をフィルタリングしない、異なる平均タイプを選択する、複数の種を選択するなど)、クエリで使用している計算を見つけましたが、同じ結果が得られませんでした。結果。