簡體   English   中英

Ms Access 中帶條件的動態選擇查詢 | SQL

[英]Dynamic Selection Query with Criteria in Ms Access | SQL

我有一個查詢,其中我 select 多個值。 創建我的表單。

結果如下所示:

在此處輸入圖像描述

最后一列 [Candidat Nom] 是一個下拉列表,其中包含另一個查詢(我們稱之為查詢 1),即 select 我的下拉列表值。

在此處輸入圖像描述

選擇很好,是我正在尋找的。 除了當它們需要不同時,我為所有行獲得相同的值。

簡化

讓我們舉個例子

在此處輸入圖像描述

我有以下候選人想要加入以下工作(用他們的 ID 表示)。

正如我們所看到的,有 2 名候選人想要第 12 號工作,並且有 1 名候選人需要其他工作。

我得到什么

在此處輸入圖像描述

列出了每項工作的所有候選人。

我想要的是

在此處輸入圖像描述

在此處輸入圖像描述

我實際上做了什么

我是否將以下查詢(查詢 1)放在我的專欄中。

SELECT T_SALARIE.SALARIE_nom & " " & T_SALARIE.SALARIE_prenom AS Candidat Nom

FROM T_EMPLOI INNER JOIN (T_SALARIE INNER JOIN (T_SALARIE_EMPLOI LEFT JOIN T_STATUT_EMPLOI ON T_SALARIE_EMPLOI.SALARIE_EMPLOI_statut_id = T_STATUT_EMPLOI.STATUT_EMPLOI_id) ON T_SALARIE.SALARIE_NNI = T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni) ON T_EMPLOI.EMPLOI_identifiant = T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant

WHERE (((T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*valid*" Or (T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*décidé*")  AND ((T_EMPLOI.EMPLOI_entreprise_id)=1));

這給了我想要的結果,但是我之前提到的問題(每行的結果相同)

所以

我想我需要一個新的標准。 我添加了一個,當我的實際表的兩個“emploi ID”(如前所示)和一個幫助我的 select 候選人相等時,它將成為 select 候選人。

使用以下查詢:

SELECT T_SALARIE.SALARIE_nom & " " & T_SALARIE.SALARIE_prenom AS Candidat, T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant

FROM T_EMPLOI INNER JOIN (T_SALARIE INNER JOIN (T_SALARIE_EMPLOI LEFT JOIN T_STATUT_EMPLOI ON T_SALARIE_EMPLOI.SALARIE_EMPLOI_statut_id = T_STATUT_EMPLOI.STATUT_EMPLOI_id) ON T_SALARIE.SALARIE_NNI = T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni) ON T_EMPLOI.EMPLOI_identifiant = T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant

WHERE (((T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*valid*" Or (T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*décidé*") AND ((T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant)=[R_Select_COMOB]![ACTION_identifiant_emploi]));

但我不斷收到以下彈出窗口,要求我輸入工作 ID

在此處輸入圖像描述

那么如何對每一行進行查詢比較和 select 正確的值?

我希望我解釋清楚。 如果沒有,請告訴我,以便我添加更多詳細信息。

謝謝 !

感謝您的幫助,特別是@June7 的建議,我找到了解決我的問題的方法:

我根據我沒有在第一手選擇的 JobID 為 select 值添加了一個標准。 然后根據列 (jobID) select 所需的值

這是我的最終查詢:

SELECT 
[SALARIE_nom] & " " & [SALARIE_prenom] & " (" & [SALARIE_NNI] & ")" AS Salarié, T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni, T_SALARIE_EMPLOI.SALARIE_EMPLOI_id, T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant 

FROM 

(T_STATUT_EMPLOI INNER JOIN T_SALARIE_EMPLOI ON T_STATUT_EMPLOI.STATUT_EMPLOI_id = T_SALARIE_EMPLOI.SALARIE_EMPLOI_statut_id) LEFT JOIN R_Select_Salarie ON T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni = R_Select_Salarie.SALARIE_NNI 

WHERE 

(((T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant)=[Formulaires]![F_COMOB]![ACTION_identifiant_emploi]) AND ((T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*validé*") AND ((T_SALARIE_EMPLOI.SALARIE_EMPLOI_Entreprise) Like "*RTE*"));

然后為每一行更新我的值。 我添加了一個重新查詢輸入的 VBA 代碼。

Private Sub ACTION_Candidats_P_Enter()
ACTION_Candidats_P.Requery
End Sub

這樣我的問題就解決了。

暫無
暫無

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

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