SQLite Query с использованием вложенного SELECT - PullRequest
13 голосов
/ 18 декабря 2009

Я пытаюсь выбрать cpu_time из БД, но время должно соответствовать нескольким другим критериям - то есть build_version, test_letter, design_index, multi_thread и test_index

Я думал, что это сработает (внутреннее выражение SELECT DISTINCT работает само по себе):

set query [db eval \
    {SELECT DISTINCT cpu_time WHERE cpu_time IN 
            (SELECT DISTINCT mgc_version, test_type_letter, design_index, 
                             test_index, cpu_time, multi_thread 
                    FROM TestExecutions WHERE test_type_letter
                    BETWEEN $testletter AND $testletter)}]

*** Примечание - это дает мне ошибку «нет такого столбца: cpu_time»

, где мой первый SELECT извлек бы все элементы из отчетливого возврата. Затем из каждого возврата я хотел использовать ТОЛЬКО cpu_time для каждого типа $ testletter.

Это для генерации CSV-файлов, которые имеют только cpu_time. Очевидно, что я ошибаюсь?

Спасибо!

1 Ответ

25 голосов
/ 18 декабря 2009

Вы всегда должны использовать WHERE xxx IN (SELECT xxx FROM ...) вместо выбора нескольких элементов во внутреннем выделении. Вы можете добавить их во внешний выбор, например:

SELECT DISTINCT 
    mgc_version, 
    test_type_letter, 
    design_index, 
    test_index, 
    cpu_time, 
    multi_thread 
FROM TestExecutions
WHERE cpu_time IN 
(
    SELECT DISTINCT cpu_time 
    FROM TestExecutions 
    WHERE test_type_letter BETWEEN $testletter AND $testletter
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...