2014-08-31 2 views
0

나는이 하나 개의 MySQL의 테이블과 같습니다 (CONFIGS) :MYSQL INNER 속성이 하나 개의 행이 존재하지 않는 경우 가입

+---------+ 
| config | 
+---------+ 
| ie8  | 
| Firefox | 
| Chrome | 
+---------+ 

나는처럼 보이는 다른 테이블 (프로젝트)가 :

+---------+----------------+--------------+ 
| config | name   | passed_count | 
+---------+----------------+--------------+ 
| Firefox | Project 1  |   0 | 
| Chrome | Project 1  |   3 | 
| Chrome | Project 2  |   1 | 
| Firefox | Project 2  |   0 | 
| ie8  | Project 2  |   0 | 
+---------+----------------+--------------+ 
기본적으로 나는 모든 프로젝트가 모두 C와 연결하려는

+---------+----------------+--------------+ 
| config | name   | passed_count | 
+---------+----------------+--------------+ 
| Firefox | Project 1  |   0 | 
| Chrome | Project 1  |   3 | 
| ie8  | Project 1  |   0 | 
| Chrome | Project 2  |   1 | 
| Firefox | Project 2  |   0 | 
| ie8  | Project 2  |   0 | 
+---------+----------------+--------------+ 

:

내가 좋아하는 최종 결과가보고 싶다 ONFIGS

| ie8  | Project 1  |   0 | 

이 내가 조인 다양한 LEFT을 시도

을 추가해야 할 다른 필드 RIGHT JOINS하지만이 동작하지 않습니다 수 있습니다. 누구든지 제발 도와 주실 래요?

+0

이 레코드의 출처는 어디입니까? ** | ie8 | 프로젝트 1 | 0 | ** –

+1

안녕하세요. 자신이 시도한 것을 보여주십시오. 어쩌면 해결하기 쉬운 일일 수도 있습니다. – GolezTrol

+0

프로젝트가있는 테이블이 없습니까? 현재 가지고있는 테이블은 실제로 조인 된 테이블 (프로젝트/브라우저 연관) 인 것 같습니다 – GolezTrol

답변

1

가능한 모든 조합을 생성 한 다음 left join을 사용해야합니다. 다음은 예입니다.

select c.config, n.name, coalesce(p.passed_count, 0) as passed_count 
from config c cross join 
    (select distinct name from projects p) n left join 
    projects p 
    on p.name = n.name and p.config = c.config; 
+0

크로스 조인을 사용하고 이름과 구성별로 그룹화 할 수 없었습니까? 크로스 조인은 이미 두 테이블의 모든 조합을 생성해야합니다. 그렇지 않으면 뭔가 빠졌습니까? –

+0

안녕하세요, 빠른 답장을 보내 주셔서 감사합니다. 이게 효과가있다면 저것을 시험합시다. –

+0

@Gorgon에게 감사드립니다. 문제를 일으키는 CROSS JOIN을하는 것을 잊었습니다. –

관련 문제