【问题标题】:Doing a join in a couple of sqlite tables is not working在几个 sqlite 表中进行连接不起作用
【发布时间】:2014-02-21 19:37:02
【问题描述】:

所以我有这个 SQLite 字符串

SELECT
a.anchor as [From Anchor],
c.anchor as [To Anchor]
FROM table1 a
JOIN table2 b ON b.toAnchor = a.anchor
JOIN table3 c ON c.anchor = b.fromAnchor

当我执行它时没有错误,但它返回一个空表。所有 3 个表中都有数据,并且数据确实与应有的位置匹配,但我什么也没得到。

表1

filename | farea | anchor
_________________________
file.doc   N/A     srs100

表2

type | filename | fromAnchor | toAnchor
_______________________________________
SRS      N/A       srs100      crs888

表3

filename | farea | anchor
_________________________
file.doc   N/A     crs888

我知道我可以只使用表 2,但我需要这样做才能找到 from 和 to 不匹配的区域。

如果我找不到这样的方法,那么我想找到一种方法,可以将 2 个表格组合起来,这样就可以了。

表1

type | filename | fromAnchor | toAnchor
_______________________________________
SRS      N/A       crs100      srs888

表2

type | filename | fromAnchor | toAnchor
_______________________________________
CRS      N/A       srs888      srd999

结果

crs    | srs    | srd
_______________________________________
crs888  srs888   srd999

如果需要,我可以提供更多信息。现在我想知道sql调用是否正确。

【问题讨论】:

  • SQL 看起来正确。仔细检查您的数据。您在那里遗漏了一些东西尝试将您的联接更改为左联接,看看哪些表的列返回空值,您就会知道不匹配的数据在哪里。
  • 好吧,如果我翻转表格周围的连接语句已填满,但它会为每个 SRS 一遍又一遍地重复 CRS 部分。
  • table 1 anchor 和 table2 to anchor 有不同的值
  • 像这样:crs100 srs101 crs100 srs102 crs100 srs103 crs100 srs104 crs102 srs101 crs102 srs102 crs102 srs103 crs102 srs104
  • 我怀疑你可以从 table1 开始。对于 table1,因为您使用具有别名的同一列来连接其他两个表的条​​件不会找到匹配项

标签: sql sqlite join inner-join


【解决方案1】:

原来数据库中的数据配置不正确。事实证明这行得通。

SELECT
TABLE1.toAnchor AS CRS,
TABLE1.fromAnchor AS SRS
FROM tbl_traces_srstraces
LEFT JOIN TABLE2 ON TABLE2.anchor = TABLE1.toAnchor
LEFT JOIN TABLE3 ON TABLE3.anchor = TABLE1.fromAnchor

【讨论】:

    【解决方案2】:

    试试这个

    SELECT 
    fromAnchor, 
    toAnchor 
    from table2 a
    join table1 b on  a.fromAnchor =b.anchor
    join table3 c on a.toAnchor =c.anchor
    

    【讨论】:

    • 这在 sql fiddle 中有效,但在我的数据库中无效。您认为这可能是什么原因造成的?
    • 查看加盟条件
    【解决方案3】:
    SELECT
    a.anchor as [From Anchor],
    c.anchor as [To Anchor]
    FROM table1 a
    JOIN table2 b ON b.fromAnchor = a.anchor
    JOIN table3 c ON c.anchor = b.toAnchor
    

    【讨论】:

    • sql的字符串仍然没有错误,但它仍然想不返回任何数据。
    • 在 sql fiddle 中工作,但在我的数据库中不起作用。你认为这可能是什么原因造成的?我根据我的数据库制作了小提琴......
    • 确保连接列中的值完全相同。进行修剪以消除空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多