PHP - 多表行字段连接到单个表

时间:2017-07-25 09:36:36

标签: php mysql join

首先,我不确定如何说出这个标题。所以我有两张桌子(英雄和记录)。在users表中,我分隔了名字和姓氏。在记录表中,我可以有1到2个用户。如何在同一个表上进行连接? PS。我想在桌子上显示它。

MYSQL heros table:
id|firstname|lastname
1 |Peter    |Parker
2 |Mary     |Jane

MYSQL records table:
id|badguy      |hero1id|hero2id
1 |Green Goblin|1      |
2 |Doc Oc      |1      |2

我想在表格中显示我的上述信息(这将使用html,css等)。我知道怎么做我只是不知道使用php加入JOIN的正确方法。

Displayed table:
Heros & Bad Guys
Green Goblin | Peter Parker
Doc Oc       | Peter Parker and Mary Jane

PHP代码: //创建查询 - 记录

$query = "SELECT records.*, heros.firstname, heros.lastname FROM records
        INNER JOIN heros
        ON records.hero1id = heros.id";

//运行查询

$records = $db->select($query);

现在我使用以下代码显示其中一个名称,如何在不引起干扰的情况下显示另一个名称?

<td><?php echo $row['badguy']; ?></td> 
<td><?php echo $row['firstname']; ?> <?php echo $row['lastname']; ?></td>

2 个答案:

答案 0 :(得分:0)

更新记录表结构,如##

MYSQL记录表:
id | badguy | hero1id |
1 | Green Goblin | 1 |
2 | Doc Oc | 1 |
3 | Doc Oc | 2 |

通过使用此结构,您可以添加无限数量的用户。请遵循此表结构。

答案 1 :(得分:0)

您可以使用以下sql。但我仍然建议按照别人的建议组合hero1id和hero2id。

SELECT records.badguy,GROUP_CONCAT(CONCAT(firstname,'',lastname)SEPARATOR'和')AS herosname FROM记录 INNER JOIN英雄 ON records.hero1id = heros.id OR records.hero2id = heros.id GROUP BY badguy