2013-04-16 2 views
0

나는 세 번째 테이블에 병합하려는 테이블이 2 개 있습니다. 행을 선택하고 PHP를 사용하는 대신 순수하게 MySQL 쿼리로 사용하고자합니다. 세 번째 테이블을 만드는 것.PHP없이 2 MySQL 테이블에서 새 MySQL 테이블을 작성하는 방법

표 1은 다음

ID Name 
1 A 
2 
3 

표 2에 포함 된이 포함 된 다음

ID Desc 
10 
15 B 
20 

나는 다음과 같은 결합 된 테이블을 생성하는 쿼리 문을 쓰고 싶어하지만 난 단지 새로운 제품 설명에 원하는 표 1에 Name의 비 공백 값 또는 표 2에 Desc를 포함하고 두 표에 공백이없는 경우 표 2가 비어 있지 않은 경우 표 1보다 우선 적용됨

ID1 ID2 Desc 
1 10 A 
1 15 B 
1 20 A 
2 10 
2 15 B 
2 20 
3 10 
3 15 B 
3 20 

MySQL 쿼리로 사용할 수 있습니까? PHP 메서드를 사용해야합니까?

감사합니다.

SELECT a.ID을 ID1, ID2로 b.ID, (CASE WHEN b.Desc 같이

+0

: http://stackoverflow.com/questions/2112043/mysql-how-to-create-a-new-table- 2 차 존재하는 주 키 조인 – Lawson

+0

대부분의 데이터 관련 절차는 순수한 SQL에서 수행 할 수 있습니다 ... [here] (http://dev.mysql.com/doc/)를 참조하십시오. refman/5.5/ko/create-table-select.html)를 참조하십시오. – hd1

+0

음, 아마 @LawsonCulver. 그러나 나는 새로운 테이블을 "생성"하고 싶지 않습니다 ... 나는 기존 테이블을 테이블 1과 테이블 2의 데이터로 재설정하여 새로 고침하고 싶습니다. "UPDATE TABLE result as ..." "대신? –

답변

2
insert into TableThree (id1, id2, Descr) 
select 
    T1.id, 
    T2.id, 
    case LENGTH(TRIM(T2.Descr)) 
     when 0 then T1.Name 
     else T2.Descr 
    end 
from TableOne T1, TableTwo T2 
order by 1, 2 
+0

좋은 @ChrisPiazza .. 내가 함께 일할 수있는 것처럼 보입니다. 결과를 게시하고 해결책을 찾으면 답변을 받아 보겠습니다. 대단히 감사합니다 ... –

+0

당신은 스타 @ChrisPiazza입니다! 그것은 완벽하게 작동했습니다. 크게 도움과 (그리고 배우는) 감사드립니다. –

0

select t1.id as id1, t2.id as id2, if(length(t2.name), t2.desc, t1.name) as desc from t1,t2; 
+0

새로운 테이블을 만들려면 (적어도 생각하기에) "INSERT INTO"를 포함해야하기 때문에이 솔루션보다 조금 더 튼튼해야한다고 생각했습니다. @ v.sheldeshov –

+0

** ** ** 강력한입니다. 그냥 깰려고!)) .... 또한 mysql 3 같은 고대 SQL 엔진에서 작동합니다. –

+0

글쎄, 내 문제는 선택한 데이터가 표 3 @ v.sheldeshov에 삽입되는 것을보고 있지 않다는 것입니다. –

0

당신이 이런 식으로 그것을 할 수 ...이 하나 필요, 생각 NULL이 아님 THEN b.Desc ELSE a.Name END) Table1에서 Desc 전체 조인 Table2;

그러나 이것은 테스트되지 않았습니다 ... 정말 행운입니다.

감사

parascus 기본적으로이 같은 질문

+0

솔루션을 얻으려면 "INSERT INTO"를 포함해야하기 때문에이 솔루션보다 조금 더 강력해야한다고 생각했습니다. 빌드 할 새 테이블 (적어도 그렇게 생각합니다). @parascus –

+0

"INSERT INTO"를 사용해야하는 테이블이 이미있는 경우에만 "create table x as SELECT ..."를 사용하여 새 테이블을 만들 수 있습니다. – parascus

관련 문제