問題:クエリでNULLが返される 潜在的な問題:サブクエリが正しくフォーマットされていないため、並べ替えるデータがデータセット内にある場合にのみ機能します。今日のコードのSQLクエリでサブクエリがデータを返さない
例:
SELECT production_order
,SUM(total_working_time_h) - (SELECT SUM(total_working_time_h) FROM {$table} WHERE production_order = '$production_order' AND (station = '出货检验 | OQC' OR production_type = 'Rework')) AS total_working_time_h_edit
,SUM(no_of_defects) AS no_of_defects_during_production
FROM {$table}
WHERE production_order = '$production_order'
これは素晴らしい作品限り、私が持っているのいずれかとして、「リワーク」および/または「『出货检验| OQC』」この製造指図のための私のデータベースに記録。そうでなければ、NULL以外のデータはまったく得られません。だから私の問題は、私は考えてどこかに私のサブクエリである:
SELECT SUM(total_working_time_h) FROM {$table} WHERE production_order = '$production_order' AND (station = '出货检验 | OQC' OR production_type = 'Rework')
私は確信して、それは次のように成功することなく、0ではなくNULLを取得するのですために「0」を追加しようとしました:
(0 + SELECT SUM(total_working_time_h) FROM {$table} WHERE production_order = '$production_order' AND (station = '出货检验 | OQC' OR production_type = 'Rework')
例データセットをテキストとしてフォーマットさ:
production_order,total_working_time_h_edit
26135, NULL
:
production_order part_nr station total_working_time_h
26135 129-108816B-UL 压接 | Crimping 1.42
26135 129-108816B 线束组装 | Harness Assembling 7.67
26135 129-108816 测试 | Testing 0.83
26135 129-108816B 外观全检 | Appearance inspection 0.83
は、この出力を提供します
私はこの出力をしたい:
production_order,total_working_time_h_edit
26135, 10,45
私のデータセットは、私が整理したいか、私はすべてを整理したいproduction_typeはそれが必要として動作ステーションを保持する場合。しかし、それらの両方がデータセットにない場合、サブクエリが0を返すため、NULLが返されます。
私が使用している別のデータセットの例です。私がデータセットに緑色のセルでマークされたデータを持っていれば、それは動作します。そうでなければ、上記のようにNULLを返します。
NULLを返さないようにサブクエリを作成するにはどうすればよいですか?質問を自分自身を解決するために管理
WHERE station = '出货检验| OQC''...あなたは駅名の一部としてパイプを使用しようとしていますか?それとも、「出貨査定」と「OQC」を一緒に「OR」すると思いますか? –
パイプは名前の一部です。 '出货检验| OQCは総称であると見なされるべきである。 –
希望の出力と共にサンプルデータを含むテーブルを表示します。ほとんどの場合、クエリには小さな問題があります。 –