2016-04-17 8 views
0

私はこのクエリを持っている:MySQLのクエリのフィールドは、関連テーブルに存在しない場合でも、戻り相談は

SELECT of2ab_content.id, of2ab_content.title, of2ab_content.metakey, of2ab_content.metadesc, of2ab_content.introtext, of2ab_content.fulltext AS completetext, of2ab_content.publish_up, of2ab_users.name AS author 
FROM of2ab_content, of2ab_users 
WHERE of2ab_content.id = 5039 
AND (of2ab_users.id=of2ab_content.created_by) 

of2ab_content.created_by に存在するが、それがないとき、フィールドでのここでの問題はありますof2ab_users.idテーブルに存在しない場合、クエリは空のまま戻ります。著者がusersテーブルに存在しない場合は、残りのフィールドを返すクエリが必要です。

いずれかをお勧めしますか?

答えて

3

left joinが必要です。単純なルール:は、FROM句のカンマを使用します。 常に明示的なjoin構文を使用してください。

SELECT c.id, c.title, c.metakey, c.metadesc, of2ab_content.introtext, 
     c.fulltext AS completetext, c.publish_up, u.name AS author 
FROM of2ab_content c LEFT JOIN 
     of2ab_users u 
     ON u.id = c.created_by 
WHERE c.id = 5039; 

テーブルエイリアスを使用すると、クエリの書き込みと読み取りがより簡単になります。

+0

提案していただきありがとうございます。 – Saymon

関連する問題