WHERE 取得条件① GROUP BY 指定列が同じ行を1行にまとめる ORDER BY 結果表の行の順番定義 HAVING GROUP後の値を条件にできる UNION ALL 別のSELECT結果行を下に追加する SELECTの設問 Q1.テーブル①に1,000件格納されている、テー ブル②も1,000件格納されている時、2つを条件 無しでJOINした結果は何件? Q2.GROUP BYにSELECT句の全列を指定し た結果は、GROUP BY句を書かないとの同じで ある。〇 or ×?
,user.user_cd -- 社員コード ,user.user_name -- 社員名 FROM m_organization org -- 組織テーブル JOIN m_company_user user -- 社員テーブル ON user.company_id = org.company_id AND user.organization_id = org.organization_id AND user.user_name LIKE '%す%' AND user.del_flg = '0' WHERE org.company_id = 2 AND user.del_flg = '0' ORDER BY org.organization_id, user.user_cd このSELECT文を、 どう読み解きますか? <PK> company_id organization_id <PK> company_id user_id 組織:社員 1:N
m_company_user user-- 社員テーブル LEFT JOIN m_organization org -- 組織テーブル ON org.company_id = user.company_id AND org.organization_id = user.organization1_id AND org.del_flg = '0' WHERE user.company_id = 2 AND user.del_flg = '0' GROUP BY union_index, organization_name HAVING COUNT(user.user_id) >= 4 -- この条件の効果は? -- UNION ALL -- 右上へ続く... -- ...左下からの続き SELECT 2 AS union_index ,'削除済の社員' , COUNT(v.user_name) FROM (SELECT DISTINCT u.user_name -- DISTINCTを使う理由は? FROM m_company_user u WHERE u.company_id = 2 AND u.del_flg = '1' ) v -- ORDER BY union_index ,user_count DESC 読んでみよう