根据我的要求,我进行了以下查询。现在它不起作用。查询是:
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 是主表,它连接到其他表。所以我的问题是这个表T_INV_DTL的每个条目在表T_INV_BILL中有多个调查账单。T_INV_DTL 中的 Report_dt。所以我的结果是,如果 T_INV_DTL 中有报告日期,并且 T_INV_BILL 中没有至少一个账单日期,我需要结果。
如果 T_INV_DTL 中有报告日期并且 T_INV_BILL 中没有至少一个账单日期,我需要两者的结果(如果所有人都输入了账单提交日期,则不需要它)。