php - 语法错误或访问冲突:1064,LEFT JOIN 条件上的语法错误
问题描述
使用左连接条件将两个表与第三个表连接时出现错误。
这是一个错误
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 'ON(cnt.PKDID = pd.PKDID)) 附近使用的正确语法,如
led
.PKID
=pkg
。PKID
哪里pkg
。Sta' at line 3 (SQL: select count(*) as aggregate from
packagesas
pkgleft join
eventsas
evon
ev.
EvnId=
pkg.
EvnId` left join (SELECT pd.PKDID, pd.BsNaId, cnt.ContentList, bn.nature FROM package_dets as pd, busi_natures as bn WHERE pd.BsNaId = bn.BsNaIdLEFT JOIN(SELECT PKID, PKDID, ContentList FROM package_detcontents GROUP BY PKDID)cnt\n ON(cnt.PKDID = pd.PKDID)) 领导上
led
。PKID
=pkg
。PKID
哪里pkg
。Status
= 主动和ev
.enventNm
=生日)
这是我的代码,我有错误。
->leftJoin(DB::raw("(SELECT pd.PKDID, pd.BsNaId, cnt.ContentList, bn.nature FROM package_dets as pd, busi_natures as bn WHERE pd.BsNaId = bn.BsNaId
LEFT JOIN(SELECT PKID, PKDID, ContentList FROM package_detcontents GROUP BY PKDID)cnt
ON(cnt.PKDID = pd.PKDID)) as led"),
function($join){
$join->on("led.PKID","=","pkg.PKID");
})
这是完整的代码
$package = DB::table("packages as pkg")
->select(DB::raw("pkg.PKID, pkg.EvnId, pkg.PkgNm, pkg.link, pkg.cross_price, pkg.off_percent, pkg.images, pkg.price, pkg.forpeople, pkg.Minsrating, pkg.Plsrating, pkg.remark, pkg.Status, led.nature, ev.enventNm"))
->leftJoin("events as ev","ev.EvnId","=","pkg.EvnId")
->leftJoin(DB::raw("(SELECT pd.PKDID, pd.BsNaId, cnt.ContentList, bn.nature FROM package_dets as pd, busi_natures as bn WHERE pd.BsNaId = bn.BsNaId
LEFT JOIN(SELECT PKID, PKDID, ContentList FROM package_detcontents GROUP BY PKDID)cnt
ON(cnt.PKDID = pd.PKDID)) as led"),
function($join){
$join->on("led.PKID","=","pkg.PKID");
})
->where("pkg.Status", "=", "Active")
->where("ev.enventNm", "=", $envent)
->paginate(50);
解决方案
您的查询语法有问题。这应该是您的查询-
SELECT pd.PKDID,
pd.BsNaId,
cnt.ContentList,
bn.nature
FROM package_dets AS pd
INNER JOIN busi_natures AS bn ON pd.BsNaId = bn.BsNaId
/*Above INNER JOIN can be any other JOIN as per your requirement*/
LEFT JOIN
(
SELECT PKID,
PKDID,
ContentList
FROM package_detcontents
GROUP BY PKID,PKDID,ContentList
) cnt
ON cnt.PKDID = pd.PKDID;
推荐阅读
- java - 如何根据条件从firebase数据库中获取图像url并将其加载到ImageView中?
- c# - 是否可以实现自定义安全强制转换(在任意抽象数据结构之间使用“as”)?
- python - with file.open('r',encoding="utf-8") as f: AttributeError: 'str' object has no attribute 'open'
- javascript - react-native-safe-area-context 是否适用于 Android 8 及更低版本?
- python - 编码器-解码器模型 AttributeError:“NoneType”对象没有属性“_inbound_nodes”
- c - 从位图和透明度颜色创建蒙版 - Windows GDI
- java - Hazelcast log4j 配置产生“java.lang.NoClassDefFoundError: org/apache/log4j/Logger”错误
- azure-functions - 将 Azure 函数请求记录为失败并返回状态 200
- javascript - 如何获取 jquery nice select 的值
- php - 侧边栏菜单下拉淹没 wordpress 不工作