2017-03-08 1 views
0

하나의 쿼리에 여러 개의 SELECT를 연결하려고합니다. 여기에 다른 스레드를 살펴 보았습니다.단일 쿼리에서 여러 개의 선택된 결과가있는 여러 SELECT 문

SELECT (
    SELECT COUNT(*) 
    FROM user_table 
    ) AS tot_user, 
    (
    SELECT COUNT(*) 
    FROM cat_table 
    ) AS tot_cat, 
    (
    SELECT COUNT(*) 
    FROM course_table 
    ) AS tot_course 

그러나 내 문제는 각 선택에서 여러 옵션을 얻으려고하는 것입니다.

SELECT (
SELECT c.name AS Company, 
CONCAT(UPPER(u.forename),' ', u.surname) AS Username, 
count(c.case) AS 'No. of Private Cases Generated', 
) AS 'No. of Private Cases Generated', 
(
SELECT c.name AS Company, 
CONCAT(UPPER(u.forename),' ', u.surname) AS Username, 
count(c.case) AS 'No. of Web Cases Generated' 
) AS 'No. of Web Cases Generated' 

I 오류가 계속 - 내가 한 선택에 따라 3 개 가지 다른 값을 연결하려고하기 때문에 나는이 읽은 내용에서

"# 1241 피연산자 1 열 (들)을 포함해야한다"는 인 내가 그러고 싶지 않아.

이 코드는 결국 문제가됩니다.

) AS 'No. of Web Cases Generated' 

나는이 문제를 해결하려고 노력했지만 분명히 전문성을 잃어 버렸습니다.

) "" AS Company, 
    "" AS Username, 
    "" AS 'No. of Private Cases Generated', 
    AS 'No. of Web Cases Generated' 

선택자에게 할당 할 값이 무엇인지 알지 못하기 때문에 작동하지 않습니다.

도움을 주시면 감사하겠습니다.

+1

하위 쿼리에'FROM' 절이 없습니다. – Siyual

+0

전체 쿼리가 매우 길기 때문에 선택 값의 예일뿐입니다. 쿼리를 테스트하고 거기에 자신의 노력하지만 그들과 함께 할 필요가 – troggy69

답변

1

예 그게 무슨 당신이 찾고있는 것은 UNION 오히려

처럼
SELECT c.name AS Company, 
CONCAT(UPPER(u.forename),' ', u.surname) AS Username, 
count(c.case) AS 'No. of Private Cases Generated' 
FROM some_table --first part of query 

UNION   -- combine the data 

SELECT c.name AS Company, 
CONCAT(UPPER(u.forename),' ', u.surname) AS Username, 
count(c.case) AS 'No. of Web Cases Generated' 
FROM some_other_table; -- second part of query 

당신이 실제로 생각

(SELECT c.name AS Company, 
CONCAT(UPPER(u.forename),' ', u.surname) AS Username, 
count(c.case) AS 'No. of Private Cases Generated', 
) AS 'No. of Private Cases Generated', 

수없는 하나의 열에서 여러 열 값을 병합하려고하기 때문에 올바른 행동입니다 귀하의 의견에 따라 JOIN을 수행하십시오.

select xx.Company, xx.Username,xx.'No. of Private Cases Generated', 
xxx.Company1, xxx.Username1, xxx.'No. of Web Cases Generated' 
FROM (
SELECT c.name AS Company, 
CONCAT(UPPER(u.forename),' ', u.surname) AS Username, 
count(c.case) AS 'No. of Private Cases Generated', 
FROM some_table ) xx 

JOIN (
SELECT c.name AS Company, 
CONCAT(UPPER(u.forename),' ', u.surname) AS Username, 
count(c.case) AS 'No. of Web Cases Generated' 
FROM some_other_table) xxx 
ON xx.Company = xxx.Company; 
+0

멀티 컬럼 값을 여러 컬럼에 연결하는 방법이 있습니까? – troggy69

+0

@ troggy69, 도움이 될 경우 답변 편집을 참조하십시오. – Rahul

+0

노동 조합은 사적인 것과 웹을 분리 된 가치로 되돌려 놓을까요, 아니면 그것들을 합치겠습니까 ?? – troggy69