https://stackoverflow.com/questions/3264227/relations-with-multiple-keys-in-doctrine-1-2によると、私は2つのテーブルを持っています(Doctrineで動作させることができないため) m MySQLビューとして参加しようとしています:
部:
- part_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 * from part LEFT OUTER JOIN(SELECT * FROM part_translation WHERE language_id = 1 AND part_short_code!='')as part_data_uk USING(part_type_id、part_short_code)
しかし、a)遅い(おそらくサブクエリが原因です)b)「#1349-ビューのSELECTのFROM句にサブクエリが含まれています」というエラーが表示されるため、ビューに変換できません
結合を内部結合として機能させ、右側がnullであるすべての行をスキルアップせずに、右側のテーブルに制約を追加する方法を他に理解することはできません。
サブクエリを削除してビューで使用できるようにする方法で、このクエリを最適化/改善する方法を教えてもらえますか?
MySQL 5.0.45、FWIWを使用します。
ありがとう、リチャード