2012-02-15 9 views
0

'オブジェクト'(ID、名前、model_id)、 'object_model'(id、name、type_id)と 'object_type'(id、name)の3つのテーブルがあります。テーブルを結合するMySQLの正しい方法

どのようにこれらの3つを正しく結合して、すべてのテーブルから適切な名前を取得できますか?

SELECT object.id AS id, object.name AS name, object_model.name AS model_name, object_type.name AS type_name 
FROM object 
LEFT JOIN object_model ON object_model.id = object.model_id 
LEFT JOIN object_type ON object_type.id = object.model_type_id 

をしかし、あなたの列がobject_model.type_idと呼ばれ

+1

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – Vamsi

+0

最後の行に 'object_model.type_id'と入力してください。 –

+0

エラーは 'object.model_type_id'カラムが存在しないことを意味します。助けが必要な場合は、スキーマを提供してください。推測する必要はありません。 –

答えて

1

「不明な列が 『節に』に 『object.model_type_id』」のエラーが表示されます。

私は次のようにして参加しようとしています。間違った場所にドットとアンダースコアがあります。

LEFT JOIN object_type ON object_type.id = object_model.type_id 

そうしないと、クエリが目的のとおりに動作するように見えます。

0

あなたの情報によると、 "オブジェクト"に "model_type_id"がありません。あなたが持っているものは、 "object_model"の "type_id"です。だから私はあなたが

LEFT JOIN object_type ON object_type.id = object.model_type_id 

を変更する必要がありますね

LEFT JOIN object_type ON object_type.id = object_model.type_id 
関連する問題