2017-07-14 113 views
-3
SELECT 
    COUNT(IPD_Admit_Register_Det.BID) AS BID, 
    Bed_WardList.WID, Bed_FloorList.FID 
FROM 
    Bed_BedList 
    INNER JOIN shift_last_bed 
    INNER JOIN IPD_Admit_Register_Det 
     ON shift_last_bed.IPDid = IPD_Admit_Register_Det.IPDid 
     AND shift_last_bed.IDPdid = IPD_Admit_Register_Det.IPDdid 
    ON Bed_BedList.BID = IPD_Admit_Register_Det.BID 
    INNER JOIN Bed_FloorList 
    INNER JOIN Bed_WardList 
     ON Bed_FloorList.FID = Bed_WardList.FID 
    ON Bed_BedList.WID = Bed_WardList.WID 
GROUP BY 
    IPD_Admit_Register_Det.BID, 
    Bed_WardList.WID, 
    Bed_FloorList.FID 

以上查询是MSSQL Server 2008中,但相同的使用phpMyAdmin它抛出像#1064 - 你的SQL语法有错误; ......“...... INNER JOIN”

1064错误在MySQL做的时候成功地执行 - 你有一个错误在你的SQL语法中;检查对应于您MariaDB的服务器版本的手册正确的语法使用

附近的“ON Bed_BedList.BID = IPD_Admit_Register_Det.BID INNER JOIN Bed_FloorList INNER J”第5行

+0

什么是不明确的消息你是**阅读**? –

+0

T-SQL和MySQL语法不一定相同。您可以检查手册。如果我不得不猜测我会说MySQL不喜欢那些嵌套连接 – ADyson

+0

这适用于MS SQL?真?你有你的JOIN和ON子句混合起来,动摇和搅动 –

回答

0

家伙感谢您的帮助!最后我得到了正确的查询如上

SELECT 
    COUNT(IPD_Admit_Register_Det.BID) AS BID, 
    Bed_WardList.WID, Bed_FloorList.FID 
FROM 
    shift_last_bed, 
    IPD_Admit_Register_Det, 
    Bed_BedList, 
    Bed_FloorList, 
    Bed_WardList 
WHERE 
    (shift_last_bed.IPDid = IPD_Admit_Register_Det.IPDid) 
    AND (shift_last_bed.IPDdid = IPD_Admit_Register_Det.IPDdid) 
    AND (Bed_BedList.BID = IPD_Admit_Register_Det.BID) 
    AND (Bed_FloorList.FID = Bed_WardList.FID) 
    AND (Bed_BedList.WID = Bed_WardList.WID) 
GROUP BY 
    IPD_Admit_Register_Det.BID, 
    Bed_WardList.WID, 
    Bed_FloorList.FID 
+2

海事组织你仍然会更好地使用内部连接而不是WHERE标准,只是不像上面那样嵌套。但如果这种方法有效并且速度够快,那么这是一个有效的解决方案 – ADyson