私の要件に従って、私は以下のクエリを行いました。今は動作していません。クエリは次のとおりです。
SELECT *
FROM T_INV_DTL T
LEFT JOIN (
SELECT inv_dtl_id,
Employee_id AS emp_id,
GROUP_CONCAT(DISTINCT Employee_id) AS Employee_id
FROM T_INV_INVESTIGATOR
GROUP BY
inv_dtl_id
)TII
ON T.inv_dtl_id = TII.inv_dtl_id
JOIN T_INVESTIGATION TI
ON T.inv_id = TI.inv_id
LEFT JOIN (
SELECT inv_dtl_id
FROM T_INV_BILL
GROUP BY
inv_dtl_id
)TIB
ON T.inv_dtl_id = TIB.inv_dtl_id
JOIN T_Insurance_company TIC
ON TI.client_id = TIC.ins_cmp_id
WHERE 1 T.Report_dt != '0000-00-00'
AND (
T.inv_dtl_id NOT IN (SELECT inv_dtl_id
FROM T_INV_BILL TIBS
WHERE TIBS.inv_dtl_id NOT IN (SELECT
inv_dtl_id
FROM
T_INV_BILL
WHERE
Bill_submitted_dt =
'0000-00-00'))
)
ORDER BY
Allotment_dt DESC
LIMIT 20
誰かが問題を教えてくれますか?より効率的なクエリに変更してください(100を超えるレコードがある場合、ページネーションのためにカウントを取得すると、より速く表示されます)。
T_INV_DTLはメインテーブルであり、他のテーブルに接続します。したがって、私のprobelmは、このテーブルT_INV_DTLの各エントリであり、テーブルT_INV_BILLに複数の調査請求書があります。T_INV_DTLのReport_dt。したがって、私の結果は、T_INV_DTLにレポート日があり、T_INV_BILLに少なくとも1つの請求日がない場合、結果が必要になるということです。
T_INV_DTLにレポート日があり、T_INV_BILLに少なくとも1つの請求日がない場合は、両方の結果が必要です(すべての請求日が入力されている場合は、それは必要ありません)。