Oracle / SQL - объединение подсчетов из «не связанных» не связанных таблиц - PullRequest
2 голосов
/ 19 апреля 2011

Предположим, у меня есть две таблицы GOOD и BAD, в которых хранятся записи для производства виджетов.Мои таблицы выглядят так:

Widget      Good
----------------
Widget A    Y
Widget A    Y
Widget B    Y

Widget      Bad
----------------
Widget A    Y
Widget B    Y

У меня есть два базовых запроса

select count(*) as good from table_good where widget = 'Widget A' and Good = 'Y'
select count(*) as bad from table_bad where widget = 'Widget A' and Bad = 'Y'

В результате получатся две таблицы:

good
----
2

bad
---
1

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

good    bad
-----------
2       1

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

Спасибо!

Ответы [ 2 ]

5 голосов
/ 19 апреля 2011

Попробуйте это:

SELECT (SELECT COUNT(*) AS good 
        FROM   table_good 
        WHERE  widget = 'Widget A' 
               AND good = 'Y') AS good, 
       (SELECT COUNT(*) AS bad 
        FROM   table_bad 
        WHERE  widget = 'Widget A' 
               AND bad = 'Y')  AS bad 
FROM   dual  
1 голос
/ 19 апреля 2011

Другим способом является использование FULL JOIN:

SELECT COALESCE(A.widget,B.widget) AS Widget, COUNT(G.*) AS Good, COUNT(B.*) AS Bad
FROM table_good G
FULL OUTER JOIN table_bad B
ON G.widget = B.widget AND A.Good = B.Bad
WHERE (G.widget = 'Widget A' OR B.Widget = 'Widget A') 
AND (G.Good = 'Y' OR B.Good = 'Y')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...