我有一张票表和一张顾客表。我正在尝试从故障单表中获取基本信息,只需从customers表中添加clientIisplayName字段,该字段对应于故障单表中的clientID字段。
我还需要验证where子句是否正确,我只希望它返回票证信息,其中ticketstatus不等于“关闭”我应该使用<>或者不等于?
我得到#1064 - 你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“SELECT t.id,t.clientID,c.clientDisplayName,t.ticketTitle t.ticketDueDate t.t”附近使用正确的语法
这是我的查询,我刚开始使用PDO,但我相信我的问题只是加入,因为我也是新手:
$conn->prepare("SELECT
t.id,
t.clientID,
c.clientDisplayName,
t.ticketTitle,
t.ticketDueDate,
t.ticketStatus,
t.ticketProblemType,
t.ticketAssignedTech,
t.ticketLastModifiedDate FROM `tickets` AS t
INNER JOIN `customers` AS c ON t.clientID = c.id
WHERE t.ticketStatus <> "closed"
ORDER BY t.ticketDueDate ASC");
答案 0 :(得分:2)
从,
开始的列名后缺少t.ticketTitle
。
您使用"
作为准备工作的字符串,因此您需要将'
放在closed
左右,这样才不会认为您关闭了原始字符串。例如。 WHERE t.ticketStatus <> 'closed'
答案 1 :(得分:2)
对于您选择的每个列,语句应由,
删除。此外,还存在其他语法和语义问题,请参阅错误代码并引用文档。在创建联接之前,我建议单独创建table
,以便您可以验证表是否正确,然后执行INNER JOIN
。构建查询是一个循序渐进的过程。
在MySQL中比较strings
应使用LIKE
或NOT LIKE
MySQL Doc on String Comparison
供参考,如果您需要其他查询语法,请参阅MySql Doc