можно добавить префикс столбцов в объединении в Jet (доступ)? - PullRequest
1 голос
/ 30 июня 2009

У меня есть демонстрационное приложение, использующее php с бэкэндом Access / Jet. У меня есть эти (упрощенные) таблицы:

People
------
ID
BankID    // foreign key in Banks
Name
Address

Banks
--------
ID
Name
Address

Я делаю соединение:

SELECT * FROM People LEFT JOIN on People.BankID = Banks.ID

Какой лучший способ избежать столкновений имен? Это работает:

SELECT People.*, 
Banks.ID as BankID, 
Banks.Name as BankName, 
Banks.Address as BankAddress 
FROM People LEFT JOIN on People.BankID = Banks.ID

но это становится ужасно многословно, когда у вас больше, чем несколько столбцов. Можно ли как-то сказать «поставить перед всеми столбцами в таблице« Банки »префикс« Банк »?

Ответы [ 3 ]

2 голосов
/ 30 июня 2009

Нет, хотя вы можете использовать псевдоним для сокращения имени таблицы.

Что ж, вероятно, уже слишком поздно, но я использую соглашение об именах полей, которое полностью исключает дублирование имен полей. Правила именования таблиц и полей Тони Некоторым это нравится. Некоторые люди самостоятельно придумали одни и те же решения. Другие ненавидят это. пожимают плечами

Тем не менее, если вы используете построитель запросов, Access вводит для вас все имена таблиц, когда вы смотрите на создаваемый им оператор SQL.

0 голосов
/ 30 июня 2009

Используйте имена корреляций таблиц (разговорные «псевдонимы») для определения столбцов в вашем SQL, например. здесь P1 и B1 являются именами корреляции:

SELECT P1.*,
       B1.ID AS BankID,
       B1.Name AS BankName,
       B1.Address AS BankAddress
  FROM People AS P1
       LEFT OUTER JOIN Banks AS B1
          ON P1.BankID = B1.ID;
0 голосов
/ 30 июня 2009

Нет функции «префикс моих столбцов», которую вы можете включить, но поскольку вы уже работаете в PHP, генерировать SQL с соответствующими ключевыми словами «AS» должно быть довольно просто. Просто зациклите поля и таблицы, которые вы хотите, с некоторыми сравнениями строк.

Как упоминал Тони, Access сделает это автоматически, если вы используете построитель запросов, поэтому, если ваши запросы предопределены, вы можете разрешить Access сделать это за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...