【发布时间】:2019-12-31 05:07:32
【问题描述】:
当我们使用左连接条件将两个表连接到第三个表时出现错误。
这是一个错误
SQLSTATE[42000]:语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MariaDB 服务器版本,用于在 'ON(cnt.PKDID) 附近使用正确的语法 = pd.PKDID)) 在
led.PKID=pkg.PKID其中pkg.Sta' at line 3 (SQL: select count(*) as aggregate frompackagesaspkgleft joineventsasev@987 987654331@EvnId=pkg.EvnId`左加入 (选择 pd.PKDID、pd.BsNaId、cnt.ContentList、bn.nature FROM package_dets 为 pd,busi_natures 为 bn WHERE pd.BsNaId = bn.BsNaIdLEFT JOIN(SELECT PKID, PKDID, ContentList FROM package_detcontents 按 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);
【问题讨论】: