2013-06-11 2 views
0

빈 ID를 구성 할 수 있습니다 내 tbl_module은, 내가 뭘 원하는 그것에 검사를 수행하는 것입니다,하지만 오류가 내 쿼리 나던 일, 나에게 돌아검사 내부 테이블 실존에 가입

SET @IID = 1 
SELECT t1.ID, t1.Module FROM tbl_user t1 

내 문제가 있습니다 여기에서 시작, 나는 내 이전 쿼리에 가입 할 수 없다, 나는 이것이 쿼리를 실행하는 불법적 인 방법이라고 알고 있지만, 누군가가 나를 교정하거나 나를 계몽 할 수 있습니까?

IF EXISTS(SELECT t2.ID FROM tbl_Module t2 where @IID = t2.id) 
BEGIN 
    INNER JOIN tbl_Module t2 where t1.id = t2.id 
END 
+1

내측 조인이 아니라 왼쪽 조인을 원했던 것처럼 들리십니까? – Don

+4

당신은 이것을 SQL Server와 MySQL로 태그를 붙였습니다 ... 당신은 어느 것을 사용하고 있습니까? – ajtrichards

답변

1

이 하나 (MS SQL)를보십시오 - 돈은 그냥 아무 모듈의 경우 열 t1.Module에 NULL 둘 것이다 가입 왼쪽을 수행하는 것이 더 일반적이다 말했듯이

DECLARE @SQL NVARCHAR(MAX) 
SELECT @SQL = ' 
SELECT * 
FROM dbo.tbl_user t1 
' + CASE WHEN OBJECT_ID('dbo.tbl_Module') IS NOT NULL 
     THEN 'JOIN dbo.tbl_Module t2 ON t1.id = t2.id' 
     ELSE '' 
    END 

PRINT @SQL 
EXEC sys.sp_executesql @SQL 
+0

+1 완벽합니다. 똑같이하려고 했어요. 실제로 그것을 시작했습니다. ... – Luv

+0

사례와 존재하지 않는 것을 비교해보십시오. =) –

+0

당신의 경우에는'CASE'와'IF EXIST'가 동일합니다. 이 쿼리에서는'CASE + OBJECT_ID'를 선호합니다. – Devart

1

해당 이드가 있습니다.

SELECT t1.ID, t1.Module FROM tbl_user t1 
LEFT JOIN tbl_Module t2 where t1.id = t2.id 

귀하의 요구 사항은 특별합니까? 희망이 도움이됩니다!