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

问题描述

我正在用C编写一个客户端来管理图书馆信息系统。我在客户端中编写了此sql查询,但出现此语法错误。有人可以帮助我找到此错误吗?谢谢。

错误->错误1064(42000):您的SQL语法有错误; 检查与您的MariaDB服务器版本相对应的手册 正确的语法,以在CD的内部将COPIA用作C on (CD.COPIA_idCOPIA = C.idCOPIA)第1行的内部联接LIBRO a'

代码:

  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);
        
  if(mysql_query(conn,q)!= 0) {
       print_error (conn,"query SELECT statement failed");
  } else {
       printf ("query SELECT statement succeeded: %lu rows affected(unsignedlong)mysql_affected_rows   (conn));
  }

解决方法

如果您的表真的叫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);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...