2017-06-01 35 views
0

請幫我解決這個SQL查詢:MSACCESS - 至多有一個記錄可以通過這個子查詢返回

SELECT DISTINCT [ClassSessions].Shortcode 
    ,[CertIV_BC_A].ID 
    ,[CertIV_BC_A].Units 
    ,[CertIV_BC_A].AT 
    ,Format((
      SELECT DATE 
      FROM ClassSessions 
      WHERE [ClassSessions].[Code] = [CertIV_BC_A].[SessionStart] 
       AND ([ClassSessions].[OccurenceID] = '34849') 
      ), 'dd/mm/yy') AS StartDate 
    ,[CertIV_BC_A].SessionStart 
    ,[CertIV_BC_A].SessionEnd 
FROM CertIV_BC_A 
    ,ClassSessions 
WHERE (([ClassSessions].[OccurenceID] = '34849')) 
ORDER BY [CertIV_BC_A].ID; 

這些是2個數據庫:
CertIV_BC_ACert IV_BC_A_Database


ClassSessions ClassSessions Database

查詢在ClassSessions數據庫中只有1個OccurenceID時有效。但是,如果ClassSessions中有多個OccurenceID,則會出現錯誤。

這是查詢的結果 模塊ID AT開始日期結束日期

  • 列表項
  • 模塊1 1 AT1 2017年5月10日31/05/2017
  • 模塊1 2 24 AT2/05/2017 26/06/2017
  • 模塊1 3 AT3
  • 模塊1 4 AT4
  • 模塊1 5 AT5
  • 模塊2 6 AT1 28/06/2017 28/08/2017
  • 模塊2 7 AT2 28/06/2017 2017年8月7日

請讓我知道如果我需要提供更多的細節。非常感謝您

回答

0

選擇頂部1或最大的日期從您的子查詢

SELECT DISTINCT 
    [ClassSessions].Shortcode, 
    [CertIV_BC_A].ID, 
    [CertIV_BC_A].Units, 
    [CertIV_BC_A].AT, 
    Format(
    (SELECT 
    MAX(Date) 
    FROM ClassSessions 
    WHERE [ClassSessions]. 

    [Code] = [CertIV_BC_A].[SessionStart] 
    AND ([ClassSessions].[OccurenceID] = '34849')), 'dd/mm/yy') AS StartDate, 
    [CertIV_BC_A].SessionStart, 
    [CertIV_BC_A].SessionEnd 

FROM CertIV_BC_A, 
    ClassSessions 
WHERE (([ClassSessions].[OccurenceID] = '34849')) 

ORDER BY [CertIV_BC_A].ID; 
+0

它的工作原理...我試圖把無處不在,非常感謝! – Musicazx

0

我把Format子查詢中。

,(
    SELECT Format(DATE, 'dd/mm/yy') 
    FROM ClassSessions 
    WHERE [ClassSessions].[Code] = [CertIV_BC_A].[SessionStart] 
     AND ([ClassSessions].[OccurenceID] = '34849') 
) AS StartDate 
+0

它看起來更好(更具可讀性),但仍然返回多個值,其中只有一個值 –

相關問題