[英]Creating a left outer join in MySQL with right-hand constraints
根據https://stackoverflow.com/questions/3264227/relations-with-multiple-keys-in-doctrine-1-2 ,我有兩個表(由於無法在Doctrine中使用)我試圖以MySQL視圖的身份加入:
部分:
part_translation:
限制part_type_id和part_short_code在表之間必須匹配。
由於以下事實使情況變得復雜:
我有一個有效的查詢:
從左外部聯接中選擇*(從part_translation WHERE language_id = 1和part_short_code!=''中選擇*)作為part_data_uk使用(part_type_id,part_short_code)
但是a)速度很慢(可能是由於子查詢所致),b)我無法將其變成視圖,因為出現錯誤“#1349-視圖的SELECT在FROM子句中包含子查詢”
我無法弄清楚如何在不使聯接充當內部聯接並熟練掌握右側為空的所有行的情況下向右側表添加約束。
誰能告訴我如何以擺脫子查詢並使其在視圖中可用的方式優化/改進此查詢?
使用MySQL 5.0.45,FWIW。
謝謝,理查德
你可以把相當多的東西在日ON
部分。 不會很漂亮,但是可以工作:
SELECT * FROM `part` `p` LEFT JOIN `part_translation` `t` ON (
`p`.`part_type_id` = `t`.`part_type_id`
AND `p`.`part_short_code` = `t`.`part_short_code`
AND `t`.`part_short_code` != ""
AND `t`.`language_id` = 1
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.