Могу ли я автоматизировать заявление «ВКЛ» из запросов MySQL?
Вопрос
Фон
В процессе QA/QC я пишу много запросов с несколькими соединениями. Я использую MySQL.
Я хотел бы знать, как (если) я могу упростить операторы соединения, например, установив поля по умолчанию для присоединения.
Мои таблицы названы с множественной формой объекта, который они содержат:
names
types
actions
surnames
names_surnames
куда names_surnames
это много многообещающего таблица
Основные ключи всегда id
И иностранные ключи всегда, например,
names.type_id
names.action_id
names_surnames.name_id
names_surnames.surname_id
Мои соединения были бы чем -то вроде
select names.col1
from names join types on names.type_id = type.id
join actions on names.action_id = actions.id;
Вопрос
Есть ли способ заставить MySQL всегда предполагать, что таблицы будут соединены с on thistables.thattable_id = thattable.id
?
Решение
Как насчет Создание просмотров Для объединений, которые используются неоднократно?
Например:
create view my_view as
select names.id as name_id, names.type_id, names.action_id, ...
from names join types on names.type_id = type.id
join actions on names.action_id = actions.id;
Другие советы
Если столбцы были названы одинаковыми в таблицах «Оба», я думаю, вы могли бы использовать NATURAL JOIN
. Анкет Хотя это не сработает для вас, ваша последовательность в именованиях все равно должна позволить вам генерировать запросы-или, по крайней мере, положения присоединения-с языком сценариев.
Если таблицы, вовлеченные в акцию соединения, идентично названные поля,
Затем вы можете использовать пункт использования синтаксиса соединения.
Например
Если таблица действий имела action_id в качестве первичного ключа вместо идентификатора
и таблица типов имела type_id в качестве первичного ключа вместо идентификатора
Тогда запрос может быть переписан как
select names.col1
from names join types USING (type_id)
join actions USING (action_id);
Попробуй !!!