2012-06-18 2 views
1

내가 참여하려고하는 테이블이 몇 개 있습니다.SQL 동일한 열, 다른 테이블, 다른 값으로 조인

는 난 그냥 내가 원하는 일을하는 방법을 알고하지 않습니다

는, 그렇게 설명하기 조금 어렵다 지금까지 당신에게 쿼리를 보여줍니다 : 작동하지 않습니다

SELECT exp_channel_data.field_id_102, 
     exp_channel_data.field_id_104, 
     exp_channel_data.field_id_126, 
     exp_channels.deft_status 
FROM exp_channel_data 
    INNER JOIN exp_channels 
    ON exp_channels.channel_id = exp_channel_data.channel_id 
    INNER JOIN exp_channel_titles 
    ON exp_channels.channel_id = exp_channel_titles.channel_id 
WHERE exp_channels.channel_id = 18 
AND exp_channel_titles.channel_id = 19 

비트 AND exp_channel_titles.channel_id = 19

문제점은 0 개의 결과가 반환된다는 것입니다. 그러나 두 컬럼 모두에 데이터가 있음을 알고 있습니다. 그들은 완전히 별개의 데이터 세트 임에도 불구하고.

exp_channels

는 등의 날, 시간, 가격 등 모든 데이터를 포함

타이틀 정보의 모든하지만이 포함

exp_channel_titles 두 사람을 결합해야합니다 그녀는 그래서의 결과 집합을 얻을 수 있습니다 :

"제목, 일, 교사, 시간을"등

사람이 작업을 수행하는 방법에 대한 해결책이 있다면 그래서 난 그냥 궁금 해서요?

감사합니다.

+0

어떤 결과를 얻고 싶습니까? 나는이 쿼리가 0 행을 보여준다고 생각한다 ... –

+1

작동하지 않는다는 것은 무엇을 의미합니까? 검색어가 원하는 것을 반환하지 않습니다. 너무 복잡해 보이지 않으므로 설명을 해보는 것이 좋습니다. –

+0

질문이 좀 더 명확하게 업데이트되었습니다. – DarkMantis

답변

2

내부 결합을 사용 중이므로 한 행의 channel_id이 모두 같아야합니다.

OR을 의미합니까?

SELECT exp_channel_data.field_id_102, 
     exp_channel_data.field_id_104, 
     exp_channel_data.field_id_126, 
     exp_channels.deft_status 
FROM exp_channel_data 
    INNER JOIN exp_channels 
    ON exp_channels.channel_id = exp_channel_data.channel_id 
    INNER JOIN exp_channel_titles 
    ON exp_channels.channel_id = exp_channel_titles.channel_id 
WHERE exp_channels.channel_id = 18 
OR exp_channel_titles.channel_id = 19 

또는 IN을 사용할 수 있습니다.

WHERE exp_channels.channel_id IN (18, 19) 
+0

미안해 내가 설명하지 않은 것이 내 잘못이라고 생각한다. 그것은 올바르게,하지만 내가 필요로하는 것이 아닙니다. TRY로 질문을 업데이트하고 좀 더 설명해보십시오. – DarkMantis

+0

@DarkMantis channel_id가 18과 19 일 수 있기 때문에 결과가 나지 않습니다. 그렇지 않습니까? – xdazz

+0

그래, ID가 18 인 exp_channels에서 channel_id를 가져와야하고 ID가 19 인 exp_channel_titles에서 channel_id를 가져와야합니다. 이것이 가능한지 모르겠습니다. – DarkMantis

관련 문제