2
私は、各エントリにカウントが表示されるように解決策を探しています。しかし、私が試みたすべてのクエリは、すべてのエントリを1つの行にグループ化するか、または1つのカウントを間違っています。私は、NOT NULLであるcomplete_dateで、「last_4_ssn」と「タイプ」「をlast_nameの」をチェックし、カウントを取得しようとしているMySQLグループ化せずにサブクエリのカウントを取得する
------------------------------------------------------
| id | last_name | last_4_ssn | type | complete_date |
------------------------------------------------------
| 1 | TEST | 1234 | CC | NULL |
| 2 | TEST | 1234 | CC | NULL |
| 3 | TEST | 1234 | CC | 2016-09-11 |
| 4 | TEST | 1234 | CC | 2016-09-06 |
| 5 | TEST | 1234 | CC | NULL |
| 6 | TEST | 1234 | FE | 2016-08-30 |
| 7 | TEST | 1234 | FE | 2016-09-01 |
| 8 | TEST | 1234 | FE | 2016-09-02 |
------------------------------------------------------
:
はここ数なしに私のテーブルです。
私はこのように見えるように私の結果のテーブルをしたいと思います:完全な日付と完全な日付と3つのFEと2 CCがあるか
--------------------------------------------------------------
| id | last_name | last_4_ssn | type | complete_date | count |
--------------------------------------------------------------
| 1 | TEST | 1234 | CC | NULL | 0 |
| 2 | TEST | 1234 | CC | NULL | 0 |
| 3 | TEST | 1234 | CC | 2016-09-11 | 2 |
| 4 | TEST | 1234 | CC | 2016-09-06 | 2 |
| 5 | TEST | 1234 | CC | NULL | 0 |
| 6 | TEST | 1234 | FE | 2016-08-30 | 3 |
| 7 | TEST | 1234 | FE | 2016-09-01 | 3 |
| 8 | TEST | 1234 | FE | 2016-09-02 | 3 |
--------------------------------------------------------------
お知らせ?これは私が得ようとしている数です。ここで、last_name、last_4_ssnおよびtype allは同じであり、complete_datesはNOT NULLです。
私がしようとしています現在のSQLがある(しかしかなりあり):
SELECT
clients.id,
clients.session_type,
clients.last_name,
clients.complete_date,
clients.last_4_ssn,
dups.the_count
FROM clients
LEFT JOIN (
SELECT id,
COUNT(*) AS the_count,
session_type,
last_4_ssn,
last_name,
complete_date
FROM `clients`
GROUP BY last_name, last_4_ssn, session_type
HAVING the_count > 1 AND complete_date IS NOT NULL) AS dups
ON (dups.last_4_ssn = clients.last_4_ssn AND dups.last_name = clients.last_name AND dups.session_type = clients.session_type)
GROUP BY clients.id
任意のアイデアをいただければ幸いです。御時間ありがとうございます!
速すぎます。 「INNER JOIN」はLEFT JOINのままにする必要があると思います。 – Terminus
@Terminusあなたは正しいです、それはLEFT JOINである必要があります。フィドルのおかげで、私はこれと他のわずかな修正をすることができました。 –
あなたは本当に忍者です!これはすごくうまくいった!私はWHEREの代わりにSUMを使用することは決して考えなかったでしょう。ありがとうございました! – sevmusic