簡體   English   中英

WHERE /聯接3個表中的子查詢,其中2個用於記錄,一個用於編號,則不返回結果/失敗-MSAccess

[英]subquerying in WHERE/Joining 3 tables, 2 for records and one for number, returns no result/fails - MSAccess

我的查詢不會返回任何記錄。 盡管我沒有返回所有內容的代碼,但根據我的編寫方式,它不返回記錄或返回所有記錄。

我需要從具有實際記錄的兩個來源中提取數據,而第三個表具有的項目范圍信息並非特定於任何記錄。 我需要過濾出大於Miles_Budgeted變量的記錄。

盡管如果我將param.Miles_Budgeted替換為數字值(例如1000),則它不會返回任何記錄,它會過濾到所需的記錄。

SELECT
    a.sort_id,
    a.l1l2,
    a.rtot_pct_oftot_miles,
    b.sumofeq,
    b.c_per_mile,
    b.sumofo_total,
    a.cpminrmd,
    a.RunTotMiles,
    param.Miles_Budgeted

FROM
    (SELECT (p.Budget_Cost_Targ / p.Project_Cost_Per_Mi) AS Miles_Budgeted FROM Tbl_Project_Parameters as p) AS param,
    qry_par_l2_by_cpermi AS a 
    INNER JOIN
        qry_l2 AS b 
        ON a.l1l2 = b.l1l2 
WHERE
 ((a.RunTotMiles) <= 
        (Param.Miles_Budgeted
                   )
)

ORDER BY
    a.sort_id;

查詢的此變體無法運行(FROM子句中的語法錯誤)

SELECT     
           a.sort_id, 
           a.l1l2, 
           a.rtot_pct_oftot_miles, 
           b.sumofeq, 
           b.c_per_mile, 
           b.sumofo_total, 
           a.cpminrmd, 
           a.runtotmiles, 
           param.miles_budgeted 
FROM       ( 
           ( 
                  SELECT (p.budget_cost_targ / p.project_cost_per_mi) AS miles_budgeted 
                  FROM   tbl_project_parameters                       AS p ) AS param 
INNER JOIN qry_par_l2_by_cpermi AS a ) 
INNER JOIN qry_l2 AS b 
ON         a.l1l2 = b.l1l2 
AND        ( 
                      a.runtotmiles) <= ( param.miles_budgeted ) 
ORDER BY   a.sort_id;

這也不會返回任何記錄:

SELECT
    a.sort_id,
    a.l1l2,
    a.rtot_pct_oftot_miles,
    b.sumofeq,
    b.c_per_mile,
    b.sumofo_total,
    a.RunTotMiles,
    a.cpminrmd 
FROM
    qry_par_l2_by_cmipermi AS a 
    INNER JOIN
        qry_l2 AS b 
        ON a.l1l2 = b.l1l2 
WHERE
    (
((a.RunTotMiles) <= 
        (
            SELECT
(p.Budget_Cost_Targ / p.Project_Cost_Per_Mi) AS Budgeted_Miles 
            FROM
                Tbl_Project_Parameters AS p 
        )
) 
    )
ORDER BY
    a.sort_id;

同樣,如果

SELECT
(p.Budget_Cost_Targ / p.Project_Cost_Per_Mi) AS Budgeted_Miles 
            FROM
                Tbl_Project_Parameters AS p 

被數字值替換時,查詢返回正確的記錄。 我試過用val()或Format(,“ Standard”)包圍subq或字段,但這不能解決問題; 僅包含相關代碼的單獨查詢將返回正確的Budgeted_Miles作為1000。

任何想法表示贊賞。

您是否嘗試過限制該子查詢僅返回一條記錄? 當您嘗試將SELECT的結果與單個值進行比較時,我知道某些SQL版本不喜歡。

我相信MS Access的語法將使用“ TOP”:

SELECT TOP 1 
(p.Budget_Cost_Targ / p.Project_Cost_Per_Mi) AS Budgeted_Miles 
FROM
Tbl_Project_Parameters AS p 

暫無
暫無

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

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