2015-07-02 2 views
1

Я разработал сценарий миграции, и в качестве последней последовательности я запускаю следующие две строки.Подведение итогов нескольких талбов в одной строке или столбце

select count(*) from Origin 
select count(*) from Destination 

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

Как выбрать материал из тех, которые выбираются в вертикальном/горизонтальном составе?

Я попытался выбрать на них как с и без скобок, но идентификатор не получился (видимо, из-за недостающий из) ...

этих вопросов связан с another one, но отличается в двух аспектах. Во-первых, это гораздо более точный и понятный вопрос. Во-вторых, он запрашивает как горизонтальный, так и вертикальный состав выбранных значений, тогда как связанные вопросы касаются только первого.

select 
    select count(*) from Origin, 
    select count(*) from Destination 

select(
    select count(*) from Origin, 
    select count(*) from Destination) 
+0

Хм ... Downvoter - уход, дайте мне знать, как улучшить этот вопрос? Я буду рад ... –

+0

Если вы публикуете код, который вы пробовали, мы можем объяснить, почему он не работает как опыт обучения. –

+0

@TabAlleman Я попытался добавить слово * select * перед двумя строками и запятую между ними. Это все, о чем я мог думать. Вы все еще хотите, чтобы я опубликовал код? Пожалуйста, просмотрите редактирование ... –

ответ

2

Вы должны гнездиться два операторов выбора под основной (верхней) ВЫБРАТЬ для того, чтобы получить одну строку с графами обеих таблиц:

SELECT 
    (select count(*) from Origin) AS OriginCount, 
    (select count(*) from Destination) AS DestinationCount 

SQLFiddle for the above query

Я надеюсь, что это это то, что вы ищете, поскольку «та же таблица», о которой вы говорите, немного запутанна. (Я предполагаю, что вы имеете в виду набор результатов)

В качестве альтернативы вы можете использовать UNION ALL для возврата двух ячеек со счетом обеих таблиц.

SELECT COUNT(*), 'Origin' 'Table' FROM ORIGIN 
UNION ALL 
SELECT COUNT(*), 'Destination' 'Table' FROM Destination 

SQLFiddle with UNION ALL

SQLFiddle with UNION

Я рекомендую добавить второй столбец текста, так что вы знаете, соответствующую таблицу для каждого номера.

В отличие от простого UNION команда UNION ALL будет возвращать две строки каждый раз. Команда UNION будет генерировать единый результат (одиночная ячейка), если количество строк в обеих таблицах одинаково (одинаковое число).

+0

Этот ответ хорошо сформулирован и закончен. Вы также добавили ссылки на скрипты, которые должны быть +2 (надеюсь, что кто-то выиграет в этом, так как я могу предоставить только +1). Я также не знал, где там скрипки для SQL, поэтому я узнал больше, чем я просил, поэтому это должно быть +3, может быть ... –

+0

@KonradViltersten Рад, что это было более чем полезно для вас! –

+0

Можете ли вы, пожалуйста, проверить, что вы все еще можете получить доступ к скриптам. Я не могу сделать это с моего компьютера. Он говорит «пожалуйста, стройте схему» и т. Д. –

1

... или если вы хотите вертикальные ...

select 'OriginalCount' as Type, count(*) 
    from origin 
union 
select 'DestinationCount' as Type, count(*) 
    from destination 
+0

Для быстрой ходьбы +1. –

Смежные вопросы