2017-11-27 16 views
1

2つの列を結合しようとしています。条件は、右表のDeleteおよびActive列に基づいています。SQL LEFT JOINと別の列のwhere節

クエリ - 整合条件を持つ別またはRIGHTテーブル内のレコードがないとき>

SELECT 
    `s`.`slider_id` as `id`, 
    `s`.`slider_type` as `type`, 
    `s`.`slider_name` as `name`, 
    `sd`.`slider_data_type` AS `sd_type`, 
    `sd`.`slider_data_value` AS `sd_value`, 
    `sd`.`slider_data_group` AS `sd_group`, 
    `sd`.`slider_data_id` AS `sd_id` 
FROM `sliders` AS `s` 
LEFT OUTER JOIN `slider_data` AS `sd` 
    ON `s`.`slider_id` = `sd`.`slider_data_s_id` 
WHERE 
    `s`.`slider_id` = '11' AND 
    ((`sd`.`slider_data_active` = 1 AND `sd`.`slider_data_delete` =0) OR 
     (`sd`.`slider_data_active` IS NULL AND `sd`.`slider_data_delete` IS NULL)) 

クエリが正常に動作しています。しかし、私はまだ時にメインまたは左の表から活性カラムを、データを取得し、右側のテーブルの列を削除したい

`sd`.`slider_data_active` = 0 AND `sd`.`slider_data_delete` = 1 

は0と1

アクティブ0、1は右側にNULLと等しくなります削除しないとき列

どうすればよいですか?

答えて

2

移動テーブル加入条件(ON)へWHERE句でAND条件、あなたがそのスタートはINNER JOINように振る舞うWHERE句でLEFT JOINEDテーブルを使用して、正確な一致が見つかった場合にのみ結果が得られた場合。

SELECT `s`.`slider_id` as `id`, `s`.`slider_type` as `type`, `s`.`slider_name` as `name`, `sd`.`slider_data_type` AS `sd_type`, `sd`.`slider_data_value` AS `sd_value`, `sd`.`slider_data_group` AS `sd_group`, `sd`.`slider_data_id` AS `sd_id` 
FROM `sliders` AS `s` 
LEFT OUTER JOIN `slider_data` AS `sd` ON `s`.`slider_id` = `sd`.`slider_data_s_id` AND ((`sd`.`slider_data_active` = 1 AND `sd`.`slider_data_delete` =0) OR (`sd`.`slider_data_active` IS NULL AND `sd`.`slider_data_delete` IS NULL)) 
WHERE `s`.`slider_id` = '11' 
+1

ありがとうございます –