2012-12-10 2 views
2

나는 아주 간단한 mysql 쿼리를 가지고 있는데,이 'data'가 정확한 'id'를 포함하는 한 행에있는 즉시 두 테이블 table1과 table2에서 '데이터'를 가져 오려고합니다. (BTW, 나는 단순히 'select data from table1, table2 where id = :id ' 시도)하지만이 작동하지 않았다두 개의 테이블을 유니온으로 쿼리하기

'select data from (
    select data from table1 union select data from table2) 
where id = :id' 

그러나 작동하지 않는 것 : 나는 준비된 요청을 달렸다. 누군가 도울 수 있었고, 내가 어디에서 무엇을 놓치고 있는지 모른다.

+0

'data'가 열 이름이 아닌 한 ... – mcalex

+0

자습서에서 가져온 이유는 무엇입니까? (죄송합니다. 아직 SQL에 친숙하지 않습니다.) – user1611830

+0

여기에서 시작하십시오 : http://www.w3schools.com/sql/default.asp – mcalex

답변

2
select * from table1 where id = :id 
union all 
select * from table2 where id = :id 
0

당신이 찾고있는 것은 가입이라고 생각합니다. 여러 유형의 조인이 있으며 가장 일반적인 조인은 LEFT JOININNER JOIN입니다.

LEFT JOIN은 일치하는 데이터가 없더라도 행을 반환하고 조인 된 데이터에 대해 null을 반환합니다.

INNER JOIN은 일치하는 데이터가 존재해야하며 일치하는 데이터가없는 경우 아무 것도 반환하지 않습니다.

INNER JOIN 사용 :

SELECT 
    table1.*, 
    table2.* 
FROM 
    table1 
    INNER JOIN table2 ON (table1.id = table2.id) 
WHERE 
    id = :id 
+0

아니요 table1과 동일한 '데이터'를 선택하고 싶기 때문에 공용체가 필요합니다. table2 – user1611830

+0

당신이하고 싶은 일이 table1과 table2의 데이터를 가져 오는 것, table2의 ID가 1이고 table1의 ID가 1 인 경우 왜 합집합을 사용해야하는지 이해할 수 없다. JOIN을 사용할 수있다. . 당신이 게시 한 SQL에서 아무것도 UNION을 사용해야합니다. – Kao

+0

확실히 IINER JOIN 프로세스를 이해하지 못했습니다. – user1611830

0

선택 table1.data, table1.id = table2.id

+0

아니요 동일한 '데이터'를 table1과 table2에 모두 표시해야합니다. – user1611830

+0

확실히 INNER JOIN 프로세스를 이해하지 못했지만이 경우 각 행에 대해 무엇을 반환할까요? 각각의 ID에 대한 '데이터'? – user1611830

1

노동 조합, 나는 것 MySQL은 복잡하고 부당한있는 표에서 table2.data 오히려 내 진술을 실행하기 위해 JOIN에 의지하십시오.

관련 문제