2008-11-06 2 views
2

과 같은 완전한 열 이름을 반환합니다. mysql select 문에서 모든 단일 필드에 대해 AS를 사용하지 않고 "table.field"와 같은 정규화 된 열 이름을 반환하는 방법이 있습니까?mysql select 문은 table.field

과 같이 :

SELECT * 
FROM table1 
LEFT JOIN table2 on table1.f_ID = table2.ID 

그 결과는 다음과 같습니다 "table1.ID", "table1.name", "table2.ID", "table2.name"...

답변

1

아닙니다. 이 작업을 수행하기 위해 동적 SQL을 작성할 수도 있지만 단순하지는 않습니다. 동적 SQL을 정말로 원한다면 알려주세요. 나는 뭔가를 채찍질하려고 할 수 있습니다.

0

명령문에서 완전한 필드 이름을 사용하면 결과 집합에 완전한 필드 이름이 생깁니다.

SELECT table1.ID, table1.name, table2.ID, table2.name 
FROM table1 
LEFT JOIN table2 on table1.f_ID = table2.ID 

나는 부담 당신이 수동으로하고있다 없애달라고 실현. 그러나 응용 프로그램에 데이터베이스 레이아웃에 대한 지식이 있으면 응용 프로그램 내에서 동적으로 생성 할 수 있습니다.

그냥 내 2 센트

+0

이것은 MySQL에서는 작동하지 않습니다. table.column 이름이 아닌 열 이름이 여전히 있습니다. –

1

당신은 잘 쓸 수 있습니다 :

SELECT table1.*, table2.* 
    FROM table1 
LEFT JOIN table2 on table1.f_ID = table2.ID 

필요가 없습니다 당신이 그들에게 원하는 경우, 각 열을 지정하기 위해 모든

+1

SQLite3 데이터베이스에서이 작업을 시도했지만 열 이름을 완전히 한정하지 않았습니다. OP가 MySQL에 관해 질문했지만, 나는 가치가 있다고 생각했다. –

+0

@BenjaminOakes 단 2 개의 (SQLite) PRAGMA가 있으며, 더 이상 사용되지 않습니다 ... full_column_names 및 short_column_names. [link] (http://www.sqlite.org/pragma.html) – metadings

3

당신이 사용할 수있는 당신이 PHP를 사용하는 경우 이 결과를 얻으려면 PDO.

$PDO->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, true);

자세한 내용은 SQL Select * from multiple tables를 참조하십시오.

0
select table1.* , table1='<======' 

     table2.* , table2='<======' 

from table1 

    left join table2 on table1.f_ID = table2.ID