Друг каждый день проводит фэнтезийный спортивный пул с участием в крупных турнирах по гольфу. Он был обработан как электронная таблица 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>
Вопросы:
Каков наилучший способ обработки строки «Всего»? Включая
«Всего» как «gName» в таблице игроков, включая общее
колонка в этом? Или есть способ использовать сумму в моем запросе?
Каков наилучший способ сохранить результаты игры в гольф? В настоящее время я
обновите свои оценки в каждой таблице, используя один запрос на очистку. Является
лучше выбрать эти результаты из запроса соединения?
Надеюсь, это достаточно ясно, я совсем не программист, просто пытаюсь выучить это для себя.
Ну, для начала, пример нормализованной среды может быть следующим (возможно, стоит упомянуть, что я почти ничего не знаю о гольфе).
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 |
...
+-----------+-------+-------+
Возможно, вам придется объяснить немного больше об отношениях между «турнирами» и «раундами».
Других решений пока нет …