【发布时间】:2020-01-17 12:37:17
【问题描述】:
我使用 MSSQL 作为我的数据库,但 Medoo 没有通过 INNER JOIN 成功执行选择查询。
这是我的查询。
$configurations = $this->database->select("application_configurations", [
"[><]environments" => ["active_environment_id", "id"]
], [
"environments.name"
], ["application_configurations.application_id" => $id]);
查看查询日志后,我发现正在输出以下内容:
'SELECT [environments].[name] FROM [application_configurations] INNER JOIN [environments] USING ([active_environment_id], [id]) WHERE [application_configurations].[application_id] = 1'
MSSQL 不喜欢这样:
“"active_environment_id" is not a recognized table hints option.”
我会这样写的:
select environments.name from application_configurations
inner join environments on environments.id = application_configurations.active_environment_id
where application_configurations.application_id = 1
非常简单的查询工作
$configurations = $this->database->select("application_configurations",
["active_environment_id"],
["application_id" => $id]
);
我怎样才能让它与 MSSQL 一起工作?
编辑
我尝试按照 cmets 中的建议使用左连接查询。
还是不行,这是在后台做的查询。
SELECT [environments].[name] FROM [application_configurations]
LEFT JOIN [environments] USING ([active_environment_id], [id])
WHERE [application_configurations].[application_id] = 1`
【问题讨论】:
-
USING ([active_environment_id], [id])是什么意思?似乎应该是加入的条件。喜欢ON application_configurations.active_environment_id = environments.id -
Medoo documentation 看起来可能
"[><]environments" => ["active_environment_id", "id"]应该是"[>]environments" => ["active_environment_id" => "id"]。 -
我是这么想的,sql语句就是Medoo在后台打印出来的
标签: php sql-server medoo