从一个查询中的三个表中选择会得到相乘的结果

时间:2011-10-16 09:06:47

标签: python sqlite

我尝试在一个查询中从三个表中进行选择。 我选择的这三个sql表每个表有93行


import sqlite3

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()

然后我尝试:


for line in enumerate(results):
    print line

是什么给了我8648行,这是93 * 93或92 ** 2 当我在一个查询中只选择两个表时,一切正常,我得到93行 如何在一个查询中从三个表中进行选择,并在for循环期间从表中获取正确的行数,而不是乘以行数?

1 个答案:

答案 0 :(得分: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

这提供了许多好处,包括更容易阅读和更容易修改以在需要时使用外连接。