2014-11-21 2 views
0

그래서이 질문에 대한 답변을 위해 모든 곳을 살펴 봤지만 하나는 찾을 수없는 것 같습니다. 그래서 하나가 있으면 중복 된 게시물에 대해 유감입니다.여러 테이블에서 단일보기를 선택하는 단일 소스

내가 가진 문제는 내가 differnt 한 테이블에서 여러 항목을 refrences 테이블이이

입니다. 그것은이 주 참조 테이블 (참조 할 모든 항목을 보유하고있는 하나)

ID:key 
itemID:item refrenced 

내가 다음

Speakers 
Sessions 
Sponsors 

같은 것들에 대한 다른 테이블을 가지고있다이

같은 설정이다 이 테이블은 참조 테이블에서 가리키는 테이블입니다. 다시 돌아가고 싶은 것은 간단한 하위 집합입니다. refrence 테이블 인 'itemID'필드는 다른 테이블의 itemID 필드에 매핑됩니다.

내가 발견 한 것은 발견 된 모든 항목이 결과에 표시된다는 것인데, 이는 일치하는 항목 ID에 대해 3 개의 표를 모두보고 데이터를 표시한다는 것을 의미합니다.

그래서 참조 테이블에서 예를

당신이

ID:1 , itemID: 1111 
ID:2 , itemID: 2222 
ID:3 , itemID: 3333 
ID:4 , itemID: 4444 
ID:5 , itemID: 5555 

그래서 우리는 우리의 참조 테이블에서 5 개 항목이있을 수 있습니다, 나는 항목 ID

에 일치하는 세 개의 테이블에보고 싶다
Speakers 
Sessions 
Sponsors 

는 테이블에서 반환해야합니다 일치가있는 경우

내가 그것이 어떤 결과를 반환하지 SQL에서 뷰에서이 작업을 수행하려고하면3210

, 내가 가입 같은데요

가 어쨌든 나는이 다소 만드는 희망 ... 잘못이고 내가 조인 아주 좋은 아니라고 인정 감각 및 당신이 저에게 제공 할 수있는 정보는 크게 감사하겠습니다.

감사합니다.

당신은 노조 절 뷰를 만들 수 있습니다

답변

0

이제
SELECT ref_table.ID, ref_table.ItemId, speakers.title 
FROM ref_table, speakers 
WHERE ref_table.itemId = speakers.ItemId 
UNION 
SELECT ref_table.ID, ref_table.ItemId, sessions.title 
FROM ref_table, sessions 
WHERE ref_table.itemId = sessions.ItemId 
... 

이 ID를 사용하여 테이블을 쿼리 (해당 itemId는 모든 테이블에서 고유 가정), 당신은

SELECT * FROM my_view WHERE id = ? 
0

사용 UNION 할 참조 표와 결합하십시오.

Select R.itemId, T.title 
From 
(
    Select itemid, title ,'speakers' as type 
    from speakers 
    UNION 
    Select itemid, title ,'sessions' as type 
    from sessions 
) T 
Join refTable R 
On R.itemid = T.itemId 
관련 문제