2011-12-28 7 views
3

제가 일하고있는 회사의 내부 웹 사이트를 관리했고, mysql 데이터베이스에서 데이터를 가져와야합니다. 내가 겪고있는 문제는 데이터가 6 개의 다른 테이블에 있으며 모두 동일한 필드를 사용하지만 행이 모두 고유하다는 것입니다. 행은 한 테이블에서 시작한 다음 다른 테이블로 완전히 이동합니다. 종업원).어떤 테이블에 결과가 있는지 확인하십시오.

한 번에 6 명 모두를 쿼리하는 쉬운 방법이 있습니까? 또한 테이블의 제목을 검색 할 수있는 것이 유용 할 것입니다.

PHP를 사용하여 쿼리를 실행하고 표시하고 있습니다. 모든 행의 위치를 ​​정의하고 고유 한 ID를 가진 다음 다른 테이블이있는 테이블을 만드는 것이 더 낫겠습니까?

+0

"모든 행의 위치를 ​​정의하고 고유 한 ID를 가진 다음 다른 테이블의 필드를 정의하는 다른 테이블을 만드는 것이 더 좋습니까?" 예, 이것은 고전적인 디자인 패턴입니다. – Interrobang

+0

거기에 있습니다. 행운을 빈다, 너는 그것을 필요로 할 것이다. –

답변

0

이 쿼리를 완료하려면 union all 사용

select 
    'Table1' as TableName, 
    * 
from 
    Table1 
union all 
select 
    'Table2', 
    * 
from 
    Table2 
union all 
select 
    'Table3', 
    * 
from 
    Table3 

이 ... 그래서

에 더 나은 데이터베이스 설계를 들어, 으로 하나 개의 테이블을 가지고 하나 싶은 그 모든 행 및 지정된 상태 테이블을 연결하여 지정된 행이있는 상태를 나타내는 상태 테이블을 만들 수 있습니다. 프로세스의 각 스테이지에 대한 테이블은 열악한 설계이며 거대한 두통이 발생합니다.

0

테이블을 재구성 할 수 없기 때문에 테이블에 모든 행과 마커가 하나만있어 프로세스의 어느 위치에 있는지 알 수없는 경우 UNION -approach로 이동합니다. 즉 :

SELECT 'Data from Table 1', t1.field1, ... 
    FROM Table1 t1 
UNION 
SELECT 'Data from Table 2', t2.field1, ... 
    FROM Table2 t2 
UNION 
(Table3, 4, 5 and 6 in the same manner) 
.... 

그런 식으로 데이터의 출처를 알 수 있으며 한 번에 6 개를 모두 얻을 수 있습니다. UNION의 모든 부분에서 정확히 동일한 필드 목록을 가져야한다는 것을 기억하십시오.

0

6 개의 테이블을 쿼리하기 위해 SQL 문을 생성하는 코드 생성기를 만들 수 있습니다. 생성기는 UNION of 6을 작성하고 쿼리 된 테이블의 이름과 동일한 상수 값으로 각 선택 항목에 "테이블"열을 추가합니다. 그것은 발전기를 쓰는 것이 될 것이라고 말하지 않더라도, 진술을 쉽게 작성하게 할 것입니다.

관련 문제