Согласно https://stackoverflow.com/questions/3264227/relations-with-multiple-keys-in-doctrine-1-2, у меня есть две таблицы, к которым (поскольку я не могу заставить его работать в Doctrine) я пытаюсь присоединиться как представление MySQL:
часть:
- part_id
- product_id
- part_type_id
- part_short_code
- ...
part_translation:
- part_type_id
- part_short_code
- LANGUAGE_ID
- internationalised_name
- ...
для ограничения, что part_type_id и part_short_code должны совпадать для всех таблиц.
Это осложняется тем фактом, что:
- Правая таблица (part_translation) может не иметь соответствующей строки (отсюда и левое соединение)
- Правая таблица действительна только для присоединения, когда part_short_code! = '' И language_id = 1
У меня есть рабочий запрос:
SELECT * из части LEFT OUTER JOIN
(SELECT * FROM part_translation ГДЕ language_id = 1 И part_short_code! = '') В качестве part_data_uk
USING (part_type_id, part_short_code)
но а) это медленно (вероятно, из-за подзапроса) и б) я не могу превратить его в представление, потому что у меня появляется ошибка "# 1349 - SELECT представления содержит подзапрос в предложении FROM"
Я не могу понять, как еще добавить ограничения в правую таблицу, не заставляя объединение действовать как внутреннее соединение, и проверяя все строки, где правая часть равна нулю.
Может кто-нибудь сказать мне, как оптимизировать / улучшить этот запрос таким образом, чтобы избавиться от подзапроса и сделать его пригодным для использования в представлении?
Использование MySQL 5.0.45, FWIW.
Спасибо,
Ричард