从三张表中选择数据时结果被乘倍
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
这样做有很多好处,包括更容易阅读,也更方便修改,如果你需要使用外连接的话。