Как различить одинаковые имена полей двух таблиц в запросе выбора? - PullRequest
1 голос
/ 10 мая 2010

В моей базе данных более двух таблиц, и все они содержат одинаковые имена полей, такие как

table A           table B       table C
field1            field1        field1
field2            field2        field2
field3            field3        field3
.                 .             .
.                 .             .
.                 .             .
.                 .             .

Я должен написать SELECT запрос, который получает почти все те же поля из этих 3 таблиц. Я использую что-то вроде этого:

select a.field1,a.field2,a.field3,b.field1,b.field2,b.field3,c.field1,c.field2,c.field3 from table A as a, table B as b,table C as c where so and so.

но когда я печатаю значение field1, это дает мне последние значения таблицы.

Как я могу получить все значения трех таблиц с одинаковыми именами полей? мне нужно написать отдельный запрос для каждой таблицы ИЛИ есть ли какие-нибудь способы получить их все в одном запросе?

Ответы [ 3 ]

1 голос
/ 10 мая 2010

Просто напишите так,

select a.field1 as af1,a.field2 as af2,a.field3 as af3,b.field1 as bf1,b.field2 as bf2,b.field3 as bf3,c.field1 as cf1,c.field2 as cf2,c.field3 as cf3 from table A as a, table B as b,table C as c where so and so.
0 голосов
/ 10 мая 2010

Вы можете использовать псевдонимы столбцов.например, Примечание: синтаксис может варьироваться в зависимости от вашей БД.

SELECT
    a.field1 `A_Field1`,
    b.field1 `B_Field1`

SELECT
    a.field1 [A_Field1],
    b.field1 [B_Field1]

SELECT
    a.field1 AS A_Field1,
    b.field1 AS B_Field1
0 голосов
/ 10 мая 2010

Это артефакт того, как ваш инструмент программирования обрабатывает дублированные имена полей. Если хотите, вы можете использовать AS для псевдонимов полей:

SELECT a.field1 AS a_field1, ...

Затем он должен быть доступен как a_field1.

...