【问题标题】:"SQL error or missing database (no such column" but table with column exists“SQL 错误或缺少数据库(没有这样的列”但存在列的表)
【发布时间】:2021-07-19 23:47:45
【问题描述】:

我有一个本地 SQLite 数据库,我将一些 CSV 文件放入其中。

运行此查询时:

SELECT
      cc.codedname
    , cc.PreferredName
    , pr.IrdiPR
    , pr.identifier
    , pr.PreferredName
    , pr.datatype
    , pr.IrdiUN
    , un.PreferredName
    , restricted_values.IrdiCC
    , restricted_values.IrdiPR
    , restricted_values.IrdiVA
    , restricted_values.preferredname_va
    , pr.definition
--
FROM
    (cc
    INNER JOIN (pr
                INNER JOIN (cc_pr
                            LEFT JOIN restricted_values
                                   ON  (
                                   cc_pr.IrdiPR = restricted_values.IrdiPR
                                   AND cc_pr.IrdiCC = restricted_values.IrdiCC
                                   )
                            )
                ON pr.IdPR = cc_pr.IdPR
                )
   ON cc.IdCC = cc_pr.IdCC
   )
   LEFT JOIN un
   ON pr.IrdiUN = un.IrdiUN

我在 DBeaver 中收到此错误:

[SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的列:restricted_values.IrdiCC)

但是“restricted_values”表确实存在并且有一个名为“IrdiCC”的列?

【问题讨论】:

标签: sql sqlite


【解决方案1】:

将每个ON 子句写在它所属的连接之后,并且不要过度使用使代码更难阅读的括号:

.....................................................................
FROM cc
INNER JOIN cc_pr ON cc.IdCC = cc_pr.IdCC
INNER JOIN pr ON pr.IdPR = cc_pr.IdPR
LEFT JOIN un ON pr.IrdiUN = un.IrdiUN
LEFT JOIN restricted_values ON cc_pr.IrdiPR = restricted_values.IrdiPR 
                           AND cc_pr.IrdiCC = restricted_values.IrdiCC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多