【问题标题】:SQL inner join with 3 tables and 2 ids stored in 1 tableSQL 内连接,3 个表和 2 个 id 存储在 1 个表中
【发布时间】:2018-03-05 19:03:18
【问题描述】:

您好,我正在尝试加入 3 个表,在 T1 中,我有 T2 和 T3 的 ID。但我总是得到这个错误:

Syntax error (missing operator) in query expression '(T2.id_apartmana = T1.id_apartmana) INNER JOIN tblPacijenti T3 ON (T3.id_pacijenta = T1.id_pacijenta)'.

这是我的sql代码:

SELECT *
FROM   tblapartmanirezervacije AS T1
       INNER JOIN tblapartmani AS T2
               ON ( T2.id_apartmana = T1.id_apartmana )
       INNER JOIN tblpacijenti T3
               ON ( T3.id_pacijenta = T1.id_pacijenta )
WHERE  T1.status = 'true'

我使用access数据库。

【问题讨论】:

标签: sql ms-access join syntax-error inner-join


【解决方案1】:

MS Access 在连接多个表时需要额外的括号:

SELECT *
FROM (tblapartmanirezervacije AS T1 INNER JOIN
      tblapartmani AS T2
      ON T2.id_apartmana = T1.id_apartmana
     ) INNER JOIN
     tblpacijenti T3
     ON T3.id_pacijenta = T1.id_pacijenta
WHERE T1.status = 'true'

几个建议:

  • 使用有意义的表别名。 ar 代表 tblapartmanirezervacijea 代表 tblapartmani,依此类推。这些比任意别名更容易理解。
  • 列出您想要的列,而不是select *,尤其是当同一列出现在多个表中时。

【讨论】:

  • 谢谢,我已经列出了代码中的列,但我只是在其中打了一个星号,这样它会更具可读性,因为列与这个问题无关。
【解决方案2】:

试试这个:

SELECT * FROM tblapartmanirezervacije AS T1 INNER JOIN tblapartmani AS T2 ON T1.id_apartmana = T2.id_apartmana INNER JOIN tblpacijenti T3 ON T1.id_pacijenta = T3.id_pacijenta AND T1.status = 'true'

【讨论】:

    猜你喜欢
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多