2010-12-29 7 views
0

본인은 SQL Server 2005에서 다음 달성하기 위해 노력하고있어 :SQL - 선택 취소됨 - 제발 도와주세요!

 
SELECT (IF EITHER EXISTS) usr.username, pro.email 
FROM table1 AS usr, table2 AS pro 
WHERE usr.username = 'existing_username' 
AND/OR 
pro.email = 'existing_email' 

내가 그런 일을 작성하는 방법을 알아낼 수 없습니다. 기본적으로 나는 기존의 것을 찾으면 사용자 이름을 돌려주고, 찾으면 이메일을 돌려 주길 원한다.

그래서 나에게 반환 : 사용자 이름, 이메일, 모두 또는 없음

를이 가능한가요 ???

+1

두 행 또는 하나? –

+2

테이블간에 조인을 넣을 공통 열은 무엇입니까? – Kangkan

+0

암시 적 조인 사용을 중지해야합니다. 명시 적 조인을 이해하고 사용하기 시작하면 u 리가 수행중인 내용과이를 더 잘 수정하는 f}을 이해할 수 있습니다. – HLGEM

답변

1

당신이 원하는 것은 분명하지 않습니다. 당신은 테이블을 조인하지 않을 때문에 나는 그것을 할 수있는 당신의 출처를 알고 싶다면 당신이 정말로 두

SELECT 
     usr.UserName foo 
FROM 
    table1 AS usr 
WHERE 
    usr.username = 'existing_username' 
UNION ALL SELECT 
     pro.email foo 
FROM 
    table2 AS pro 
WHERE 
    pro.email = 'existing_email' 

의 결합을 원하는 있으리라 믿고있어

SELECT 
     usr.UserName foo, 
     'usr' source 
FROM 
    table1 AS usr 
WHERE 
    usr.username = 'existing_username' 
UNION SELECT 
     pro.email foo 
     'email' source 
FROM 
    table2 AS pro 
WHERE 
    pro.email = 'existing_email' 
+0

그 트릭을 했어, 고마워! – JCraine

3

WHERE 절을 사용하면 OR을 지정할 수 있습니다.

SELECT username, email FROM table WHERE username = @username OR email = @email 
+0

바인드 변수를 사용하는 경우 +1 – Thilo

+0

시도했지만 이상한 결과가납니다. 그것은 원하는 사용자 이름의 수많은 행을 반환하고 이메일 행은 모든 사용자로 구성됩니다. "선택 usr.username, pro.email FROM table1 AS usr, table2 AS pro 어디에서 usr.username = 'user12'OR pro.email = '[email protected]' – JCraine

+1

두 개의 다른 테이블을 가지고 있음을 알면 응답에 도움이되었을 것입니다. 이 경우에는 JOIN을 사용해야합니다. –

1

확실히 가능합니다. 두 개의 테이블, 모든 사용자 이름을 가진 사용자 이름 및 모든 촬영 된 이메일이 포함 된 전자 메일이있는 경우이 쿼리는 동일한 사용자 이름 또는 동일한 전자 메일을 가진 모든 행을 반환합니다.

SELECT * FROM Usernames, Emails WHERE Usernames.Name = 'username' OR Emails.Email = 'email' 
0

하나의 테이블에 두 개의 테이블 또는 두 개의 열이 있습니까?

후자의 경우이 방법이 유용할까요? 이 전자의 경우 1 분기는 1 분기의 경우

"SELECT * from the_table WHERE email = '".$input_text."' OR username = '".$input_text."'"; 

, 당신은 아마 (결과 집합 두 개의 별도의 컬럼에 대한 입력 텍스트를 확인하고 각각의 길이를 확인하는 코드를 사용하여 두 개의 쿼리를 작성해야합니다 1)

두 테이블에 fk 관계가 없으면 하나의 쿼리를 작성하고 JOIN 문을 사용할 수 있습니다.

0

난 당신이 ....이 쿼리에 대한 부울 로직을 작성해야

이 게시물은 당신을하는 데 도움이 될 수있다 참조 생각합니다. Boolean logic

0
select usr.username, pro.email 
from table1 as usr 
inner join table2 as pro on 
    usr.id = pro.userId --I'm guessing on the relationship here 
where 
    usr.usrname = 'existing_username' or 
    pro.email = 'existing_email' 

대안 두 표의 결과를 함께 조합 할 수 있습니다.

(select username, null as email from table1) 
union 
(select null as username, email from table2) 

노동 조합은 두 테이블의 결과를 서로 결합 할 수 있습니다. 테이블.

+0

어머, 나는 모든 대문자가 SQL이 싫다. –

+2

나는 내 SQL이 소리 질러 좋아한다. 각자 자신에게 나는 추측한다. –

관련 문제