gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:08:08 26 4
gpt4 key购买 nike

使用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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com