簡體   English   中英

具有兩個相反 WHERE 條件的左外連接 + 子查詢

[英]Left outer join + sub query with two opposite WHERE conditions

在此查詢中,我想從 MySQL 數據庫中的 3 個表中獲取數據,以在 Win 表單 c# 中的數據網格視圖中顯示它我的問題是我想在連接查詢中使用子查詢,並且此子查詢包含與主查詢中條件相反的 WHERE 條件.

以下代碼是子查詢:

    " (SELECT SUM(submittal.priceCurrentWorks) FROM "+database+ "submittal WHERE submittal.addToSummary = 'false') AS 'سعر الحالية'," +
    " (SELECT SUM(submittal.requiredQuantity) FROM " + database + "submittal WHERE submittal.addToSummary = 'false') AS 'الأعمال الحالية'," 

以下代碼是完整查詢(sub 和 main):

String LeftOuterQuery = "SELECT DISTINCT boq_table.itemNum AS 'رقم البند', boq_table.descriptionOfWork AS 'وصف البند', boq_table.unit AS 'الوحدة', boq_table.contractualQuantity AS 'كمية العقد', boq_table.priceNum AS 'فئة العقد'," + 
" IFNULL(SUM(summary.priceLastWorks), 0) AS 'سعر السابقة' ," +
" IFNULL(SUM(summary.executedQuantLastSummary), 0) AS 'الأعمال السابقة'," +
" (SELECT SUM(submittal.priceCurrentWorks) FROM "+database+ "submittal WHERE submittal.addToSummary = 'false') AS 'سعر الحالية'," +
" (SELECT SUM(submittal.requiredQuantity) FROM " + database + "submittal WHERE submittal.addToSummary = 'false') AS 'الأعمال الحالية'," +
" IFNULL(summary.percentage,0) AS 'النسبة'," +
" IFNULL(SUM(submittal.requiredQuantity),0) +" +
" IFNULL(SUM(summary.executedQuantLastSummary), 0) AS 'إجمالي الأعمال'," +
" IFNULL(SUM(summary.priceLastWorks), 0) +" +
" IFNULL(SUM(submittal.priceCurrentWorks), 0) AS 'إجمالي السعر'" +
" FROM " + database + "boq_table" +
" LEFT OUTER JOIN " + database + "summary ON " + database + "boq_table.itemNum = " + database + "summary.itemNum" +
" LEFT OUTER JOIN " + database + "submittal ON " + database + "boq_table.itemNum = " + database + "submittal.itemNum" +
" WHERE summary.summaryNumber = '"+lastSummaryNumber+ "' AND submittal.addToSummary = 'true'" +
" GROUP BY boq_table.itemNum"+ 
" ORDER BY boq_table.itemNum ";

完整查詢返回它在完整/主查詢中剛剛達到 Where 條件的結果

" WHERE summary.summaryNumber = '"+lastSummaryNumber+ "' AND submittal.addToSummary = 'true'" 

並忽略子查詢中的 Where 條件。

我需要顯示實現數據addToSummary = 'false'的子查詢,實現addToSummary = 'true'全/主查詢在同一時間。

聽起來您可能只需要通過刪除WHERE submittal.addToSummary = 'false'來調整您的子查詢

我沒有看到其他選項,原因如下:將首先評估外部查詢的WHERE子句。 這意味着返回的任何行都必須有submittal.addToSummary等於'true' 之后會評估您的子查詢,因此(如果我了解您的架構)子查詢正在尋找submittal.addToSummary等於'false' ,其中只有submittal.addToSummary等於'true'值,這是由於外部查詢的WHERE子句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM