テーブルがありますtable_one, table_two, table_three, table_four
すべての構造はほぼ同じです。 列にはid, name, status, user_id
があります。多くのテーブルからのMySQLリクエスト数
i.g.私はuser_id 345
のユーザージョンをtable_fourを除くすべてのテーブルに複数回持ちます。いくつかのエントリのstatus
は1で、他のエントリは0です
ここでは、このユーザのステータスがこのテーブルのそれぞれで1だったクエリを1つカウントする必要があります。
だから私はやる:私はちょうどSUM(CASE WHEN table_one.status = 1 THEN 1 ELSE 0 END) AS count_tblone
ままにした場合、それは2、1、1、0
あるべきとき
SELECT table_one.user_id,
SUM(CASE WHEN table_one.status = 1 THEN 1 ELSE 0 END) AS count_tblone
SUM(CASE WHEN table_two.status = 1 THEN 1 ELSE 0 END) AS count_tbltwo
SUM(CASE WHEN table_three.status = 1 THEN 1 ELSE 0 END) AS count_tblthree
SUM(CASE WHEN table_four.status = 1 THEN 1 ELSE 0 END) AS count_tblfour
FROM table_one
LEFT JOIN table_one ON table_one.user_id = table_one.user_id
LEFT JOIN table_two ON table_two.user_id = table_one.user_id
LEFT JOIN table_three ON table_three.user_id = table_one.user_id
LEFT JOIN table_four ON table_four.user_id = table_one.user_id
WHERE tbl_one.user_id = 345
問題は、その要求出力4、0、0、0である - count_tblone
意志をユーザ345
の2つのレコードでtable_one
- status
のフィールドが1に等しい場合でも4になります。
機能していませんか?また、 'LEFT JOIN'の中で' = tbl_resume.candidate_id'を使うことを意味しましたか? – Edward
申し訳ありません、私は今それを修正しました。 – JohnA
それぞれのテーブルは、独自のキーで結合していますが、これは意味をなさないものです。私の考えは、あなたはtable_oneからtable_twoへ、table_twoからtable_threeへ、table_threeからtable_fourへの参加が残っているということです。私が間違っている場合は私を修正してください。 –