Итоги MySQL по данным в таблице

Друг каждый день проводит фэнтезийный спортивный пул с участием в крупных турнирах по гольфу. Он был обработан как электронная таблица Excel, и теперь он просит помочь преобразовать его в веб-сайт с использованием PHP и MySQL в WordPress.

Есть две таблицы:

Гольфисты (в сжатом виде):

+---------+-----+-----+-----+-----+------+------+------+------+
|  gName  | Rd1 | Rd2 | Rd3 | Rd4 | SRd1 | SRd2 | SRd3 | SRd4 |
+---------+-----+-----+-----+-----+------+------+------+------+
| Spieth  |  71 |  70 |  68 |  71 |    0 |    1 |    3 |    0 |
| Johnson |  70 |  70 |  69 |  70 |    1 |    1 |    2 |    1 |
| Day     |  71 |  71 |  70 |  71 |    0 |    0 |    1 |    0 |
+---------+-----+-----+-----+-----+------+------+------+------+

Где игроки в гольф зарабатывают «очки» участников пула за каждый удар по номиналу (SRd1 …)

и Игроки (сокращенно), где хранится их «список» по турнирам:

+---------+---------+------+------+------+------+-------+
|  pName  |  gName  | SRd1 | SRd2 | SRd3 | SRd4 | Total |
+---------+---------+------+------+------+------+-------+
| Player1 | Spieth  |    0 |    1 |    3 |    0 |     4 |
| Player1 | Johnson |    1 |    1 |    2 |    1 |     5 |
| Player1 | Day     |    0 |    0 |    1 |    0 |     1 |
+---------+---------+------+------+------+------+-------+

Я использую один запрос, чтобы собрать нужные мне данные и ввести их в обе таблицы: игроки в гольф и игроки.

У меня нет проблем с отображением таблицы с таблицей лидеров только для игроков в гольф, это простой запрос SELECT

Мой друг хочет показать результаты по участнику пула, как это:

+---------+------+------+------+------+-------+
| Player1 | SRd1 | SRd2 | SRd3 | SRd4 | Total |
+---------+------+------+------+------+-------+
| Spieth  |    0 |    1 |    3 |    0 |     4 |
| Johnson |    1 |    1 |    2 |    1 |     5 |
| Day     |    0 |    0 |    1 |    0 |     1 |
| Total   |    1 |    2 |    6 |    1 |    10 |
+---------+------+------+------+------+-------+

Мой текущий запрос:

<table>
<?php
global $wpdb;

$golfers = $wpdb->get_results("SELECT * FROM mr2017");

foreach ($golfers as $golfer ) {
if ($golfer->pName != $lastp){
echo '<tr height=10></tr>';
echo '<tr>
<th>' . $golfer->pName . '</th>
<th> Rd1 </th>
<th> Rd2 </th>
<th> Rd3 </th>
<th> Rd4 </th>
<th>Total</th>
</tr>';
$lastp = $golfer->pName;
}
echo '<tr>
<td>' .$golfer->mName. '</td>
<td>' .$golfer->SRd1. '</td>
<td>' .$golfer->SRd2. '</td>
<td>' .$golfer->SRd3. '</td>
<td>' .$golfer->SRd4. '</td>
<td>' .$golfer->Tot. '</td>
</tr>';
}
?>
</table>

Вопросы:

  1. Каков наилучший способ обработки строки «Всего»? Включая
    «Всего» как «gName» в таблице игроков, включая общее
    колонка в этом? Или есть способ использовать сумму в моем запросе?

  2. Каков наилучший способ сохранить результаты игры в гольф? В настоящее время я
    обновите свои оценки в каждой таблице, используя один запрос на очистку. Является
    лучше выбрать эти результаты из запроса соединения?

Надеюсь, это достаточно ясно, я совсем не программист, просто пытаюсь выучить это для себя.

0

Решение

Ну, для начала, пример нормализованной среды может быть следующим (возможно, стоит упомянуть, что я почти ничего не знаю о гольфе).

golfers
+------------+---------+
|  golfer_id | name    |
+------------+---------+
|          1 | Spieth  |
|          2 | Johnson |
|          3 | Day     |
+------------+---------+

par
+-----+
| par |
+-----+
|  71 |
+-----+

scorecard
+-----------+-------+-------+
| golfer_id | round | score |
+-----------+-------+-------+
|         1 |     1 |    71 |
|         1 |     2 |    70 |
|         1 |     3 |    68 |
|         1 |     4 |    71 |
...
+-----------+-------+-------+

Возможно, вам придется объяснить немного больше об отношениях между «турнирами» и «раундами».

0

Другие решения

Других решений пока нет …