根據我的要求,我做了下面的查詢。現在它不工作。 查詢:語法中出現SQL錯誤,需要高效的sql查詢
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中有多個調查單。 Report_dt在T_INV_DTL中。所以我的結果是,如果T_INV_DTL中有報告日期而T_INV_BILL中至少有一個帳單日期,我需要結果。
如果T_INV_DTL中有報告日期而T_INV_BILL中至少有一個帳單日期(如果所有人都輸入帳單提交日期,則不需要它),那麼我需要兩者的結果。
這是非常困難的「調試」您的查詢,而無需表的結構。您可以在[* sql小提琴*](http://sqlfiddle.com/#!3/6328d/1)中「創建」一個演示並向我們發送鏈接。否則,你應該運行每一個內部查詢,並確保它返回預期的結果並從那裏取得。 – alfasin
'WHERE 1 T.Report_dt!='0000-00-00''應該是:'WHERE T.Report_dt!='0000-00-00'' –
什麼是「Now it not working」呢?如果您沒有花時間來真實地描述問題,那麼很難幫助您解決問題。我們無法看到你的屏幕,或從我們所在的位置讀出你的想法,而「不工作」對除了你以外的每個人都沒有意義。 –