【发布时间】:2010-12-16 23:33:47
【问题描述】:
我正在处理一个查询,我使用这样的左连接从多个表中提取数据:
$查询 = " 选择 用户名, users.email, 街道地址, 地址.city, 地址.状态, 地址.zip 来自用户 左连接( 选择 地址.street, 地址.city, 地址.state, 地址.zip, `addresses.user_id` 发件人地址 ) AS 地址 ON users.id = `address.user_id` WHERE users.id = 1"; $mysql = new mysql(HOST, USER, PASS, DBNAME); $result = $mysql->query($query)->fetch_object();我现在得到的结果我可以像这样访问结果:
// 获取名字 $结果->名称; //获取街道地址 $结果->街道;因为查询最终会变得比这更复杂一些。我希望能够像这样访问数据:
// 获取用户名 $结果->用户->名称; // 获取街道地址 $结果->地址->街道;这将有助于使数据更易于阅读,因为某些表具有类似命名的字段。
任何帮助都会非常感谢。
编辑:(回应史蒂夫)
我熟悉 ORM,目前正在使用 Kohana 框架。我的兴趣是减少实际运行的查询数量。 Kohana 框架中的 ORM 为您调用的每个表/模型调用一个“SELECT *”。如果没有必要,我宁愿不这样做。
运行两个单独的查询(如示例中所示)并不是什么大不了的事,但在我的真实示例中,我将从大约 10 个单独的表中提取数据,所以我宁愿不运行单独的查询来获取我描述的功能
【问题讨论】:
-
为什么是子查询?为什么不加入地址?
-
@outis,我不完全确定这能回答我的问题,但你介意举个例子吗?我的 SQl 不是最好的
标签: php