2012-04-23 3 views
0

구체적으로 말해서 MySql.I에는 직원, 학생, 고용주 등의 데이터베이스에 많은 테이블이 있습니다. 20 개 이상의 테이블이 있습니다. 각 테이블에는 '사용자 이름'과 '나이'라는 열이 있습니다. 이제 나는 특정 사용자 이름 = 'alex'를 줄 때 모든 나이를 알려주는 쿼리를 원합니다.mysql 동일한 열 이름을 가진 모든 테이블을 선택하는 쿼리

+0

나에게 좋지 않은 디자인처럼 보입니다. – Jasper

+0

당신은 conencted 세 테이블에서 데이터를 검색 하시겠습니까? –

+0

이런 종류의 문제는 경험이 없지만 http://dev.mysql.com/doc/refman/5.0/en/show-tables.html는 문제에 대한 답처럼 보입니다. –

답변

1

사용자 (직원, 학생, 고용주 등)의 유형을 나타내는 이있는 단일 표가 있어야합니다 (예 : Users). 그러나 이런 종류의 여러 테이블에 걸쳐 쿼리는 UNION를 사용해야하는 경우 :

SELECT age FROM employee WHERE username = 'alex' UNION ALL 
SELECT age FROM student WHERE username = 'alex' UNION ALL 
SELECT age FROM employer WHERE username = 'alex' -- etc. 
0

은 데이터베이스의 가난한 디자인처럼 보이는 당신은 데이터베이스 구조를 변경할 수있는 경우, 그 이동하는 방법은 아마. 얻을

(SELECT username, age 
FROM table1) 
UNION 
(SELECT username, age 
FROM table2) 
UNION 
(SELECT username, age 
FROM table3) 
... 
0

쿼리 및 테이블 이름은 당신이 내가 당신을 구축 할 수 PHP 다음 필드 이름이있는 모든 테이블 이름이 될 것입니다 위의 쿼리에서 특정 열을

select table_name from information_schema.columns 
where table_name in (
select table_name from information_schema.tables 
where table_schema='databaseName' 
) and 
column_name='username'; 

을 갖는 그렇지 않으면, 당신이 시도 할 수 모든 테이블에서 값을 가져 오는 쿼리.

관련 문제