2017-08-07 3 views
0

私が扱っている2つのテーブルがあります。MYSQL - NULLを含むすべての行を表示

ft_form_1
ID | facility_id |認めます| |国勢調査|保留中| reporting_date | last_modified_date

ft_field_options
ID | option_value | option_name | option_order | list_id

以下のクエリでは、list_idが1のすべての施設から今日のすべての「提出物」のリストを取得できます。重複した送信が送信された場合は、最新の送信のみが表示されます。

質問:このクエリは、今日提出された施設とその後のデータの一覧のみを表示します。また、今日提出していない施設のリストを表示し、ブランクまたはヌル値を表示するにはどうすればよいですか?

SELECT t1.facility_id, t2.option_name, t2.option_order, t1.admits, 
t1.reporting_date, t1.last_modified_date, t1.discharges, t1.census, 
t1.pending, DATE_FORMAT(t1.reporting_date,'%m/%d/%Y') AS nicedate 
FROM ft_form_1 t1 
LEFT JOIN ft_field_options t2 
ON (t1.facility_id = t2.option_value AND t2.list_id = 1) 
WHERE (DATE_FORMAT(t1.reporting_date,'%m/%d/%Y') = 
DATE_FORMAT(NOW(),'%m/%d/%Y')) AND (t1.last_modified_date=(
SELECT MAX(last_modified_date) 
FROM ft_form_1 
WHERE facility_id = t1.facility_id)) 
ORDER BY option_order ASC 

答えて

0

あなたqusationは、ちょうど私があなたのコードにいくつかのものを追加するには、選択に従うと、あなたが試験で答えを見つけ、

SELECT t1.facility_id, t2.option_name, t2.option_order, t1.admits, 
t1.reporting_date, t1.last_modified_date, t1.discharges, t1.census, 
t1.pending, DATE_FORMAT(t1.reporting_date,'%m/%d/%Y') AS nicedate 
FROM ft_form_1 t1 
LEFT JOIN ft_field_options t2 
ON (t1.facility_id = t2.option_value AND t2.list_id = 1) 
WHERE (DATE_FORMAT(t1.reporting_date,'%m/%d/%Y') != 
DATE_FORMAT(NOW(),'%m/%d/%Y')) AND (t1.last_modified_date=(
SELECT MAX(last_modified_date) AND (t2.optaion_name IS NULL or t2.opation_name = "") 
FROM ft_form_1 
WHERE facility_id = t1.facility_id)) 
ORDER BY option_order ASC 

のMySQLについてのより多くのknowalageせずに何回で実行CANDとても簡単ですここにあなたはそれを実行し、あなたの自己によってさらに必要なものを追加します

関連する問題