SQLite Query с использованием вложенных SELECT

Я пытаюсь выбрать cpu_time из db, но время должно соответствовать нескольким другим критериям - т.е. 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)}]

*** Примечание - это дает мне ошибку "no such column: cpu_time"

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

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

Спасибо!

Ответ 1

Вы всегда должны использовать 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
)