Php 语法错误或访问冲突:1064,左连接条件的语法错误

Php 语法错误或访问冲突:1064,左连接条件的语法错误,php,sql,laravel,mariadb,Php,Sql,Laravel,Mariadb,使用左连接条件将两个表与第三个表连接时出错 这里有一个错误 SQLSTATE[42000]:语法错误或访问冲突:1064您有 SQL语法错误;检查与您的产品相对应的手册 MariaDB服务器版本,以便在“ONcnt.PKDID”附近使用正确的语法 =pd.PKDID作为led上的led.PKID=pkg.PKID,其中pkg.Sta'位于第3行SQL:从PackagesAspkg中选择count*作为聚合 left JoinEventsAsEvonov.EvnId=pkg.EvnId`left

使用左连接条件将两个表与第三个表连接时出错

这里有一个错误

SQLSTATE[42000]:语法错误或访问冲突:1064您有 SQL语法错误;检查与您的产品相对应的手册 MariaDB服务器版本,以便在“ONcnt.PKDID”附近使用正确的语法 =pd.PKDID作为led上的led.PKID=pkg.PKID,其中pkg.Sta'位于第3行SQL:从PackagesAspkg中选择count*作为聚合 left JoinEventsAsEvonov.EvnId=pkg.EvnId`left join 从中选择pd.PKDID、pd.BsNaId、cnt.ContentList、bn.nature 包指定为pd,业务性质为bn,其中pd.BsNaId=bn.BsNaId

左join从包_detcontents中选择PKID、PKDID、ContentList 按PKDIDcnt分组\n ONcnt.PKDID=pd.PKDID作为led上的led,其中pkg.Status=Active和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;

您的查询语法有问题。这应该是你的问题-

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;

现在,此错误显示语法错误或访问冲突:1055“eventm.package_detcontents.PKID”不在SQL分组中:选择count*as aggregate from packages`as pkg left join events as ev on ev.EvnId=pkg.EvnId left join select pd.PKDID,pd.BsNaId,cnt.ContentList,bn.nature from package_dets as pd`@SagarCoder我已更新脚本。您现在可以检查吗?现在此错误显示语法错误或访问冲突:1055'eventm.package_detcontents.PKID'不在SQL组中:select count*作为包的聚合'as pkg left join events as ev on ev.EvnId=pkg.EvnId left join select pd.PKDID,pd.BsNaId,cnt.ContentList,bn.nature从package_dets作为pd`@SagarCoder我已经更新了脚本。你现在能查一下吗?