2
SELECT * 
FROM `user` 
LEFT JOIN `user_group` 
  ON `user_group`.`userid` = `user`.`userid` 
LEFT  JOIN `email_template` 
  ON `email_template`.`user_id`=`user`.`userid` 
WHERE `user`.`agent_id`='123' 
 AND `email_template`.`type`='advertise'

それが私のSQLステートメントです。テーブル user、user group、および email_template に参加しています。問題は、クエリを実行しているユーザーにとって、テーブルにアドバタイズ タイプの email_template がないため、クエリ全体で行が返されないことです。代わりに、email_template タイプの列が null の 1 行が必要です。

4

2 に答える 2

4

email_templateフィルターを結合条件に移動してみましたか?

WHEREこれを行うと、句ではなく結合にフィルターが適用されます。にフィルターを適用すると、WHERE基本的に を実行しているINNER JOINため、基準を満たすものが何もない場合は行が返されません。

SELECT * 
FROM `user` 
LEFT JOIN `user_group` 
  ON `user_group`.`userid` = `user`.`userid` 
LEFT  JOIN `email_template` 
  ON `email_template`.`user_id`=`user`.`userid` 
  AND `email_template`.`type`='advertise'
WHERE `user`.`agent_id`='123' 
于 2013-01-25T13:40:20.620 に答える
2

email_templatetype='advertise'入会時に選択する条件に移動します。基本的に、このWHERE句により、条件に一致するレコードがフィルター処理されます。

SELECT  * 
FROM    `user` 
        LEFT JOIN `user_group` 
          ON `user_group`.`userid` = `user`.`userid` 
        LEFT  JOIN `email_template` 
          ON `email_template`.`user_id`=`user`.`userid` AND 
                `email_template`.`type`='advertise'
WHERE   `user`.`agent_id`='123' 
于 2013-01-25T13:40:46.113 に答える