programing

SQL: 여러 테이블에서 조합 선택 개수(*)

stoneblock 2023. 10. 31. 20:25

SQL: 여러 테이블에서 조합 선택 개수(*)

다른 테이블의 여러 선택 횟수(*)를 하나의 반환으로 결합하려면 어떻게 해야 합니까?

도 이 글과 비슷한 상황입니다.

하지만 한번만 돌려주세요

유니언을 시도해봤는데 세 줄의 카운트를 다시 집어넣었어요.어떻게 그것들을 하나로 합칠 수 있습니까?

select count(*) from foo1 where ID = '00123244552000258'
union all 
select count(*) from foo2 where ID = '00123244552000258'
union all
select count(*) from foo3 where ID = '00123244552000258'

edit: MS SQL 2005에 나와 있습니다.

SELECT 
(select count(*) from foo1 where ID = '00123244552000258')
+
(select count(*) from foo2 where ID = '00123244552000258')
+
(select count(*) from foo3 where ID = '00123244552000258')

이것은 쉬운 방법입니다.

아무도 이런 변화를 제안하지 않았다는 것이 놀랍습니다.

SELECT SUM(c)
FROM (
  SELECT COUNT(*) AS c FROM foo1 WHERE ID = '00123244552000258'
  UNION ALL
  SELECT COUNT(*) FROM foo2 WHERE ID = '00123244552000258'
  UNION ALL
  SELECT COUNT(*) FROM foo3 WHERE ID = '00123244552000258'
);
select 
  (select count(*) from foo) as foo
, (select count(*) from bar) as bar
, ...

기본적으로 표준 선택 내에서 하위 쿼리로 카운트를 수행합니다.

예를 들면 다음과 같습니다. 이것은 1 행, 2 열을 반환합니다.

SELECT
 (SELECT COUNT(*) FROM MyTable WHERE MyCol = 'MyValue') AS MyTableCount,
 (SELECT COUNT(*) FROM YourTable WHERE MyCol = 'MyValue') AS YourTableCount,

전에 했던 것처럼 카운트를 결합할 수 있지만, 다음과 같은 여러 가지 방법으로 카운트를 모두 요약할 수 있습니다. 그 중 하나는 다음과 같습니다.

SELECT SUM(A) 
FROM
(
    SELECT 1 AS A
    UNION ALL 
    SELECT 1 AS A
    UNION ALL
    SELECT 1 AS A
    UNION ALL
    SELECT 1 AS A
) AS B
select sum(counts) from (
select count(1) as counts from foo 
union all
select count(1) as counts from bar)

모든 필드의 이름을 지정하고 해당 필드에 외부 선택을 추가할 수 있습니다.

SELECT A, B, C FROM ( your initial query here ) TableAlias

그것이 효과가 있어야 해요.

오라클의 경우:

select( 
select count(*) from foo1 where ID = '00123244552000258'
+
select count(*) from foo2 where ID = '00123244552000258'
+
select count(*) from foo3 where ID = '00123244552000258'
) total from dual;

언급URL : https://stackoverflow.com/questions/1279569/sql-combine-select-count-from-multiple-tables