2014-07-12 3 views
0

[첫 번째 테이블] : id-nbrNight -... [(두 번째 테이블)] : 하나의 데이터베이스에서 두 개의 다른 테이블에서 정보를 추출하고 싶습니다. ID-012]mysql은 두 테이블에서 정보를 얻습니다.

첫 번째 테이블에서 nbrNight를 추출하고 싶습니다. & 두 번째 테이블의 ID는 입니다. 제 경우에는이 글을 씁니다.하지만이 글을 쓰는 방법을 모릅니다. 한 줄의 두 라인 :

SELECT sum(nbrNight) as night FROM firsttab 
SELECT count(`id`) as id FROM secondtab 

제가 는이 두 라인 rassemble하는 wirte :

SELECT sum(nbrNight) as night,count(`id`) FROM firsttab,secondtab 

하지만 그는 작동하지 않습니다 !! 내가 (있는 경우) 사이에 공통의 열을 이용하여 아래와 같이 두 테이블과 JOIN을 당신은

SELECT sum(nbrNight) as night FROM firsttab 
UNION 
SELECT count(`id`) as id FROM secondtab 

처럼 두 쿼리의 결과를 결합하는 UNION를 사용 (OR) 할 수

+3

하십시오 : 하나 이상의 열, 인라인보기 f 반환 세 가지 표현을 반환 인라인 뷰를 보여주기 위해 예를 들어

? 어떤 분야가 그들을 하나로 묶습니다. – ArtisticPhoenix

+0

하나의 단일 라인에서 두 개의 결과 만 필요합니까? 두 테이블의 행에 관계가 있고 두 테이블을 조인해야하는 경우 얻지 못했습니다. – Max

답변

1

도움이 필요합니다

SELECT sum(t1.nbrNight) as nightsum, count(t2.`id`) as idcount 
FROM firsttab t1 JOIN secondtab t2 ON t1.id = t2.id 
+0

첫 번째 쿼리는 두 개의 행을 반환합니다. OP 지정된 결과를 단일 행에 지정했습니다. 두 번째 쿼리는 단일 행을 반환 할 수 있지만 결과가 OP 사양과 일치하지는 않습니다. – spencer7593

0

하나의 옵션은 인라인 뷰와 같은 쿼리를 사용하는 것이다 (id 가정하면 그들 사이에 공통 열이다); 이러한 쿼리를 다른 쿼리의 행 소스 (테이블과 같은)로 참조하십시오.

각 쿼리는 하나의 행을 반환하므로 조인 조건 자 (별칭 CROSS JOIN) 없이도 JOIN 작업을 안전하게 수행 할 수 있습니다. 예를 들어

:

SELECT f.night 
    , s.id 
    FROM (SELECT SUM(nbrNight) AS night FROM firsttab) f 
CROSS 
    JOIN (SELECT COUNT(id) AS id FROM secondtab) s 

또 다른 옵션 (두 쿼리가 오류를 반환하지 않는 경우, 정확히 하나 개의 행을 반환 보장되기 때문에)의 SELECT 목록에서 쿼리를 포함하는 것입니다 다른 쿼리. 하위 쿼리에 열 별칭을 포함 할 필요는 없지만 별칭을 할당 할 수 있습니다. 예를 들어

:

SELECT (SELECT SUM(nbrNight) FROM firsttab) AS night 
    , (SELECT COUNT(id) FROM secondtab) AS id 

쿼리 중 하나 이상의 열을 반환 한 경우 첫 번째 예에서의 접근은 여전히 ​​작동합니다. 인라인 뷰 쿼리는 여러 표현식을 반환 할 수 있으며 외부 쿼리에서 해당 표현식을 참조 할 수 있습니다. 두 번째 예제의 패턴을 사용하면 하위 쿼리가 하나의 표현식 (하나의 열) 만 반환해야한다는 제한이 부과됩니다. - 그들이 어떻게 관련되어 rassemble 나를 @help

SELECT f.night 
    , f.cnt 
    , f.min_nbr 
    , s.id 
    FROM (SELECT SUM(nbrNight) AS night 
       , COUNT(nbrNight) AS cnt 
       , MIN(nbrNight) AS min_nbr 
      FROM firsttab 
     ) f 
CROSS 
    JOIN (SELECT COUNT(id) AS id FROM secondtab) s 
관련 문제