具有多个联接的SQL语法错误

具有多个联接的SQL语法错误,sql,mariadb,syntax-error,inner-join,Sql,Mariadb,Syntax Error,Inner Join,我正在用C编写一个客户机来管理图书馆信息系统。我在客户机中编写了这个sql查询,但是我有这个语法错误。有人能帮我找到这个错误吗?谢谢 错误-->错误1064(42000):您的SQL语法有错误; 检查与您的MariaDB服务器版本对应的手册以了解 使用near'as CD inner join COPIA as C on的正确语法 (CD.COPIA_idCOPIA=C.idCOPIA)第1行的内部连接LIBRO a' 代码: 如果您的表确实被称为COPIA DISPONIBILE,并且其中有一

我正在用C编写一个客户机来管理图书馆信息系统。我在客户机中编写了这个sql查询,但是我有这个语法错误。有人能帮我找到这个错误吗?谢谢

错误-->错误1064(42000):您的SQL语法有错误; 检查与您的MariaDB服务器版本对应的手册以了解 使用near'as CD inner join COPIA as C on的正确语法 (CD.COPIA_idCOPIA=C.idCOPIA)第1行的内部连接LIBRO a'

代码:


如果您的表确实被称为
COPIA DISPONIBILE
,并且其中有一个空格,那么您必须通过在其周围加上反勾号来对其进行转义:

snprintf(q, 1024, "SELECT CD.COPIA_idCOPIA, CD.Ripiano, CD.Scaffale 
                     FROM `COPIA DISPONIBILE` as CD 
                            inner join COPIA as C on (CD.COPIA_idCOPIA = C.idCOPIA) 
                            inner join LIBRO as L on (C.LIBRO_idLIBRO = L.idLIBRO) 
                            inner join POSSEDERE as P on (C.idCOPIA = P.COPIA_idCOPIA) 
            WHERE P.BIBLIOTECA_idBIBLIOTECA = '%d' and L.Nome = '%s'", idBiblioteca, buffer);

请标记正确的数据库,我认为您使用的是Maria DB,而不是mysql。删除
DISPONIBILE
!必须是COPIA as CD中的
在SQL中有一个表COPIA和一个表COPIA DISPONIBILLY
%
是一个通配符。当使用通配符时,必须使用
LIKE
而不是
=
乔纳森·威尔科克(Jonathan Willcock)——LIKE似乎不起作用。同样的错误用反勾号转义也可以:
从'COPIA disponible'作为CD
Mureinik——转义似乎也不起作用。。同样的error@juergend--用手杖似乎有用。。if语句打印:“查询选择语句成功……”。对不起,我没有注意到这是错误的。转义表名实际上应该使用反勾号。编辑和固定。
snprintf(q, 1024, "SELECT CD.COPIA_idCOPIA, CD.Ripiano, CD.Scaffale 
                     FROM `COPIA DISPONIBILE` as CD 
                            inner join COPIA as C on (CD.COPIA_idCOPIA = C.idCOPIA) 
                            inner join LIBRO as L on (C.LIBRO_idLIBRO = L.idLIBRO) 
                            inner join POSSEDERE as P on (C.idCOPIA = P.COPIA_idCOPIA) 
            WHERE P.BIBLIOTECA_idBIBLIOTECA = '%d' and L.Nome = '%s'", idBiblioteca, buffer);