从三张表中选择数据时结果被乘倍

1 投票
1 回答
598 浏览
提问于 2025-04-17 04:25

import sqlite3

for line in enumerate(results):
    print line

我想在一个查询中从三个表中选择数据。这三个表每个都有93行数据。

我用的代码是这样的:

database = sqlite3.connect('F.tsj')
cursor = database.cursor()
cursor.execute("select Name, C1, C2, C3, NumofEpochs, HDop, VDop, NumOfGpsSats, SecondsFrom1970 from tblSoPoints, tblCrdGnssRaw, tblCrdRawMeas where keySoPoint and keyCrdGnssRaw = keyCrdRawMeas")
results = cursor.fetchall()

然后我尝试了这个:

结果给了我8648行数据,这个数字是93乘93或者92的平方。
当我只从两个表中查询时,一切正常,我得到了93行数据。
我该如何在一个查询中从三个表中选择数据,并在循环中得到正确的行数,而不是被行数相乘?

1 个回答

3

不要这样写:

WHERE keySoPoint AND keyCrdGnssRaw = keyCrdRawMeas

我猜你是想这样:

WHERE keySoPoint = keyCrdRawMeas
AND keyCrdGnssRaw = keyCrdRawMeas

我还建议你开始使用JOIN语法,因为这样可以减少在连接条件中出错的可能性:

SELECT Name, C1, C2, C3, NumofEpochs, HDop, VDop, NumOfGpsSats, SecondsFrom1970
FROM tblCrdRawMeas 
JOIN tblCrdGnssRaw ON keyCrdGnssRaw = keyCrdRawMeas
JOIN tblSoPoints ON keySoPoint = keyCrdRawMeas

这样做有很多好处,包括更容易阅读,也更方便修改,如果你需要使用外连接的话。

撰写回答