0

MySQL に 0 レコードの行の結果を表示させる方法については、多くの Q&A がありますが、それらはすべて最大で 1 ~ 2 個のテーブル/フィールドを含みます。

私は同じ目的を達成しようとしていますが、3つのフィールドにまたがっていますが、それを達成できないようです.

これが私が一緒にハッキングしたものです:

SELECT circuit.circuit_name, county.county_name, result.adr_result, count( result.adr_result ) AS num_results
FROM 

(
SELECT cases.case_id, cases.county_id, cases.result_id
FROM cases
WHERE cases.status_id <> "2"
) q1

RIGHT JOIN county ON q1.county_id = county.county_id
RIGHT JOIN circuit ON county.circuit_id = circuit.circuit_id
RIGHT JOIN result ON q1.result_id = result.result_id
GROUP BY adr_result, circuit_name, county_name
ORDER BY circuit_name, county_name, adr_result

私が確認する必要があるのは、最初の列のすべての回線のリスト、2 番目の列の回線ごとのすべての郡のリスト、各郡のすべての可能な adr_result エントリのリストです (これらはすべての郡で同じです)。 3 番目の列、そして回路/郡/結果の組み合わせのそれぞれのカウント (たとえそれが 0 であっても)。左結合、右結合、および内部結合のすべての組み合わせを試しました (内部結合が解決策ではないことはわかっていますが、私は'私はイライラしています)そして、私がどこで間違っているのかわかりません.

どんな助けでも大歓迎です!

4

2 に答える 2

0

ここからスタートです。私はあなたの問題文に完全に従うことはできません。たとえば、ケース テーブルの目的は何ですか? それにもかかわらず、これらのテーブルのそれぞれについて「すべて」のレコードを言うと、私はそれをデカルト積として解釈します。これは、FROM 句の派生テーブルを介して実装されます (その句に JOIN がないことに注意してください)。

SELECT everthingjoin.circuit_name
  , everthingjoin.county_name
  , everthingjoin.adr_result
  , COUNT(result.adr_result) AS num_results
FROM
  (SELECT circuit.circuit_name, county.county_name, result.adr_result,
  FROM circuit
  JOIN county
  JOIN result) AS everthingjoin
LEFT JOIN cases
ON cases.status_id <> "2"
  AND cases.county_id = everthingjoin.county_id
LEFT JOIN circuit 
  ON everthingjoin.circuit_id = circuit.circuit_id
LEFT JOIN result 
  ON cases.result_id = result.result_id
GROUP BY adr_result, circuit_name, county_name
ORDER BY circuit_name, county_name, adr_result
于 2013-10-07T12:54:28.977 に答える