выбор из трех таблиц в одном запросе дает умноженный результат - PullRequest
1 голос
/ 16 октября 2011

Я пытаюсь выбрать одну из трех таблиц в одном запросе.у этих трех таблиц sql, которые я выбираю, есть 93 строки в таблице

<code>
import sqlite3</p>

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

, а затем я пытаюсь:

<code>
for line in enumerate(results):
    print line

, что дает мне 8648 строк, а это 93 *93 или 92 ** 2.
Когда я выбираю только из двух таблиц в одном запросе, все в порядке, я получаю 93 строки.
Как выбрать из трех таблиц в одном запросе и получить правильное количество строк изтаблица во время цикла for, не умноженная на количество строк?

1 Ответ

3 голосов
/ 16 октября 2011

Вместо:

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

Это дает ряд преимуществ, в том числе упрощение чтения и модификации для использования внешних объединений, если вам это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...