Как правильно выводить результаты из таблицы SQL с помощью оператора JOIN? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть два стола:

Клубы

    |---------------------|------------------|
    |          id         |       name       |
    |---------------------|------------------|
    |           1         |      Arsenal     |
    |---------------------|------------------|
    |           2         |      Chelsea     |
    |---------------------|------------------|
    |           3         |      Fulham      |
    |---------------------|------------------|
    |           4         |      Leeds       |
    |---------------------|------------------|

Матчи

    |---------------------|------------------|------------------|
    |          id         |       home       |        away      |
    |---------------------|------------------|------------------|
    |           1         |        1         |         3        |
    |---------------------|------------------|------------------|
    |           2         |        2         |         4        |
    |---------------------|------------------|------------------|

Объяснение : числа в столбцах «дома» и «в гостях» в таблице «Матчи», ссылающиеся на идентификатор в таблице «де Клубы».

Теперь я хочу повторить (с php) следующее:

|---------------------|------------------|
|          home       |       away       |
|---------------------|------------------|
|         Arsenal     |      Fulham      |
|---------------------|------------------|
|         Chelsea     |       Leeds      |
|---------------------|------------------|

Объяснение: при нажатии на название команды я хочу открыть клуб. php страница с информацией о команде.

Я пробовал следующее:

<?php
$sql = "SELECT * FROM matches JOIN clubs ON matches.home AND matches.away = clubs.id"
$rs_result = $conn->query($sql);
?> 

<div style="overflow-x:auto">
<table>
<tr><th><strong>Home</strong></th><th><strong>Away</strong></th><tr>

<?php     
while($row = $rs_result->fetch_assoc()) {
?> 

<tr>
<td><a href="club.php?id=<?php echo $row['home'];?>"><? echo $row['home']; ?></a></td>
<td><a href="club.php?id=<?php echo $row['away'];?>"><? echo $row['away']; ?></a></td>
</tr>

<?php } ?>  
</table></div>

Это повторяет следующее:

|---------------------|------------------|
|          home       |       away       |
|---------------------|------------------|
|           1         |         3        |
|---------------------|------------------|
|           2         |         4        |
|---------------------|------------------|

Мой вопрос: Как я могу показать названия клубов в таблице, но передавая идентификатор клуба в " ссылка "href"? Я пробовал $ row [1] и так далее, но это не работает. Какое SQL заявление мне нужно? ПРИСОЕДИНИТЬСЯ? ВНУТРЕННЕЕ СОЕДИНЕНИЕ? ЛЕВЫЙ РЕЙТИНГ?

Большое спасибо заранее!

1 Ответ

1 голос
/ 16 апреля 2020

Я считаю, что это должно работать - я внес корректировку в ваш запрос. Вы можете использовать левые объединения, когда вас интересует левая часть запроса (совпадения), и вам все равно, не заполнены ли клубы. Например, если у вас дома - 1 и 5. Мы знаем, что 1 - это «Арсенал», но в клубах нет 5-го входа. Левое соединение покажет это, внутреннее соединение не будет.

<?php
$sql = "SELECT home,away,homeclub.name as homename,awayclub.name  as awayname FROM matches 
JOIN clubs as homeclub ON matches.home = homeclub.id
JOIN clubs as awayclub ON matches.away = awayclub.id"
$rs_result = $conn->query($sql);
?> 

<div style="overflow-x:auto">
<table>
<tr><th><strong>Home</strong></th><th><strong>Away</strong></th><tr>

<?php     
while($row = $rs_result->fetch_assoc()) {
?> 

<tr>
<td><a href="club.php?id=<?php echo $row['home'];?>"><? echo $row['homename']; ?></a></td>
<td><a href="club.php?id=<?php echo $row['away'];?>"><? echo $row['awayname']; ?></a></td>
</tr>

<?php } ?>  
</table>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...