PHP和mysql如何使用join得到想要的结果

标签 php mysql arrays join

使用Mysql和Php时,

我总是做单个查询,然后使用 foreach 循环从 mysql 数据库构建一个结果数组。我想知道的是如何使用 mysql 来执行此操作。

我的问题很简单,但我不确定如何去做。

基本上我喜欢加入 2 个或更多表并以这样的结果结束:

['从表 1 匹配'][0,1,2,3,4]

其中表 1 是主表,0、1、2、3、4 是连接的结果。 目前,我在进行连接时一直以这种格式获得结果

['table1'][0]
['表 1'][1]
['表1'][2]

基本上发生的事情是我有 2 个表, 酒店和客房。当我加入他们时,我得到了相同的酒店名称和 1 个房间, 我的下一个结果是与下一个房间完全相同的酒店名称...

id 喜欢的是每家酒店返回 1 个结果,所有房间都打包到数组中。我一直不明白如何仅使用 mysql 查询来实现这一点。

附言。我读了本科(但 sql 一直是我最薄弱的地方) 我现在正在考虑在 12 月的假期里做一个简短的 sql 复习在线类(class)。因此,如果您愿意参与进来并向我指出一个好的 ID,我将不胜感激。

谢谢!

最佳答案

如果我没猜错,你需要 sql 查询,它会像这样返回关联数组:

[hotel1] => [
             0 => room1,
             1 => room2
             ..........
...........
];

SQL 不是那样工作的。它返回整行数据。如果左表中有一个结果链接到右表中的许多其他结果,则根据 SELECT 查询,您很可能会重复左表中的数据行及其右表中的相关数据。 实现多数组(我上面提到的)的方法是在 php 中迭代结果并根据需要修改它。

我用忘记的解决方案编辑了我的答案。我不确定它是否会对您有所帮助:

SELECT table1.id, table2Result.implodedField2 FROM table1
JOIN (
    SELECT id, table1Id, GROUP_CONCAT(field2 SEPARATOR ', ') AS implodedField2 FROM table2 WHERE table1Id=:table1Id
) AS table2Result ON table2Result.table1Id=table1.id
WHERE table1.id=:id

table1Id - 是 table2 中用于链接到 table1 的列(在您的情况下,这可能是表 hotel_rooms 中的 hotel_id) 问题是您必须传递准确的 table1 id (hotel_id) 才能获得其结果。 此查询应返回表 1 的一个结果和表 2 的串联结果(对于给定列)。这将是 php 中的普通一维数组 :)

关于PHP和mysql如何使用join得到想要的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40102701/

相关文章:

python - 如何从子矩阵组成矩阵?

php - 用下划线替换空格

php - 使用 Jquery/AJAX 将行插入数据库时​​返回 SQL 插入 ID

mysql - 将 2 个 MySQL 结果与一个附加列合并

javascript - 我的对象在数组中被覆盖

php - PHP:检查键值不为空

php - 防止 iPhone 版本网站不必要的 HTTP 请求

PHP/MYSQL 根据另一个条件检索名称

php - fatal error : Call to a member function first() on a non-object

php - MySQL PHP 当知道同一个表中的另外两个值时从数据库获取值