2014-01-21 3 views
-1

연구원 및 학생 2 개의 테이블이있는 데이터베이스가 있습니다.일치하는 항목 : 동일한 변수, 다른 테이블

두 테이블 모두 lastname이라는 변수가 있습니다.

내가하고 싶은 일은 두 표 모두에 입력 된 성을 찾는 것입니다.

명령을 입력 메신저 경우 :

SELECT lastname 
    FROM researchers 
    OR students 
    WHERE lastname = $certain_variable 

내가 error #105 2는 변수가 모호한되는 나를 인식하게 얻을 것이다.

어떻게 수정합니까?

+0

두 테이블 중 하나 또는 두 테이블 중 하나? – tmsimont

+0

변수가 사용자 이름이고 성을 선택하고 싶습니다. 여기서 문제는 사용자 이름과 성을 2 개의 테이블에 저장한다는 것입니다. – Dylan

답변

0

편집 : 질문이 명확해진 후 LEFT JOIN 답을 삭제했습니다.

당신은 복합 쿼리를 사용할 수 있습니다

SELECT all_lastnames.lastname FROM (
    SELECT lastname FROM students 
    UNION 
    SELECT lastname FROM researchers 
) all_lastnames 
WHERE lastname = $certain_variable 

기본적으로 무엇을하는가하는 것은 all_lastnames로 별명이 (UNION 만든) 1 "임시 테이블"로 두 테이블에서 선택 LASTNAME입니다. 두 테이블이

SELECT a.lastname FROM 
researches AS a 
LEFT JOIN students AS b ON (a.lastname=b.lastname) 
WHERE a.lastname = '$var' 

를 사용하는 사이에 당신은 당신이 (연구 또는 학생에서) 원하는 성 어떤 쿼리를 알려줄 필요가 일반적인 LASTNAME의의가있는 경우 그런 다음 해당 인 all_lastnames 테이블

+0

이것은 나를 위해 일했지만 성이 연구원 표에있는 경우에만 나타납니다. 학생의 성을 입력하면 결과가 0 번 표시됩니다. – Dylan

+0

당신은 "두 테이블에서 입력 된 성을 찾는 것입니다"라고 말하고 싶습니다 - "하고 싶은 말은 테이블 중 하나에 입력 한 성을 찾는 것입니까?" – tmsimont

+0

. 혼란에 대한 죄송합니다 – Dylan

0

대신 TABLENAME.LastName을 사용하면 모호성이 제거됩니다.

0

에 을 SELECT을 실행할 수 있습니다 tablename 또는 tablealias.field를 지정해야하는 이유.

당신의 테이블은 공통의 LASTNAME 값이 그나마 당신은 당신이 UNION을 사용할 수 있습니다 성을 찾을 위치를 볼을 검색하려면 :

SELECT 'found researches', lastname FROM researches WHERE lastname = '$var' 
UNION 
SELECT 'found student', lastname FROM students WHERE lastname = '$var' 

당신이 $ var에 탈출 있는지 확인합니다.

관련 문제