Объедините две таблицы для одного вывода

Как уже упомянуто в других ответах, используйте BufferedInputStreams.

После этого, я предполагаю, что размер буфера действительно не имеет значения. Любой программа является вводом-выводом связанный, и растущий размер буфера по значению по умолчанию BIS, не окажет большого влияния на производительность.

Или программа является зависящим от ЦП в MessageDigest.update (), и большинство времени не потрачено в коде приложения, так тонкая настройка, это не поможет.

(Хм... с несколькими ядрами, потоки могли бы помочь.)

47
задан HeyJude 30 January 2017 в 01:20
поделиться

2 ответа

Вам нужно будет использовать UNION для объединения результатов двух запросов. В вашем случае:

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID
UNION ALL
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum

Примечание. Если вы используете UNION ALL , как указано выше, это не медленнее, чем выполнение двух запросов по отдельности, поскольку при этом не выполняется проверка дубликатов.

81
ответ дан 26 November 2019 в 19:38
поделиться

В ожидаемом результате вторая последняя сумма строки неверна, она должна быть 40 в соответствии с данными в ваших таблицах, но вот запрос:

Select  ChargeNum, CategoryId, Sum(Hours)
From    (
    Select  ChargeNum, CategoryId, Hours
    From    KnownHours
    Union
    Select  ChargeNum, 'Unknown' As CategoryId, Hours
    From    UnknownHours
) As a
Group By ChargeNum, CategoryId
Order By ChargeNum, CategoryId

А вот вывод:

ChargeNum  CategoryId 
---------- ---------- ----------------------
111111     1          40
111111     2          50
111111     Unknown    70
222222     1          40
222222     Unknown    25.5
11
ответ дан 26 November 2019 в 19:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: