我正在将MS-Access 2003与查询创建者一起使用。我从一个表(FaitsSaillants)中选择所有内容,然后WHERE VARIABLE='TitreMandat'从另一表(tb_SOMMAIRE)中选择一个特定行()。我想从第二个表中选择另一行并将其连接起来。
FaitsSaillants
WHERE VARIABLE='TitreMandat'
tb_SOMMAIRE
PARAMETERS [CurrAxe] Text ( 255 ), [CurrOTP] Text ( 255 ), [CurrClient] Text ( 255 ), [StartDate] DateTime, [EndDate] DateTime; SELECT tb_SOMMAIRE.Valeur AS Projet, tb_SOMMAIRE.VARIABLE, * FROM (FaitsSaillants LEFT JOIN Employes ON FaitsSaillants.Utilisateur = Employes.CIP) INNER JOIN tb_SOMMAIRE ON FaitsSaillants.OTP = tb_SOMMAIRE.OTP WHERE (((FaitsSaillants.OTP)=[CurrOTP]) AND ((FaitsSaillants.Client) Like [CurrClient]) AND ((FaitsSaillants.Axe) Like [CurrAxe]) AND ((DateValue([DateInsertion]))>=[StartDate] AND (DateValue([DateInsertion]))<=[EndDate]) AND ((tb_SOMMAIRE.VARIABLE)='TitreMandat')) ORDER BY FaitsSaillants.DateInsertion DESC;
该查询的确tb_SOMMAIRE.Valeur在ID(OTP字段)与where匹配的地方添加了字段tb_SOMMAIRE.VARIABLE='TitreMandat'。它像一种魅力。但是,我想在tb_SOMMAIRE结果中添加另一行。我想获得行所在的位置VARIABLE='TitreMandat'(该部分实际上在工作)和行所在的位置VARIABLE='NomInstallation'。我将得到2行,并且当我要求Projet(tb_SOMMAIRE.Value as Projet)时,我希望将这两行连接并显示。这两行OTP(ID)与中选择的行相同FaitsSaillants。
tb_SOMMAIRE.Valeur
OTP
tb_SOMMAIRE.VARIABLE='TitreMandat'
VARIABLE='TitreMandat'
VARIABLE='NomInstallation'
Projet
tb_SOMMAIRE.Value as Projet
抱歉,如果是法文。
信义者
Index AutoNumber Projet Text Axe Text Client Text OTP Text FaitSaillant Memo DateInsertion Date Utilisateur Text
OTP Text VARIABLE Text Valeur Text
OTP VARIABLE Valeur UGPSW NomInstallation PosteNemiscau UGPSW TitreMandat oscilloperturbographe UGPSW RespIng CU9656 GWIHK NomInstallation AnotherInstallation GWIHK TitreMandat Anytitle GWIHK Responsable ImportantPerson
怎么样:
PARAMETERS [CurrAxe] TEXT ( 255 ), [CurrOTP] TEXT ( 255 ), [CurrClient] TEXT ( 255 ), [StartDate] DATETIME, [EndDate] DATETIME; SELECT q.Projet, * FROM (faitssaillants f LEFT JOIN employes e ON f.utilisateur = e.cip) INNER JOIN ( SELECT s1.otp, [s1].[valeur] & "," & [s2].[valeur] AS Projet FROM ( SELECT otp, valeur FROM tb_sommaire WHERE [variable] = 'TitreMandat') AS s1 INNER JOIN ( SELECT otp, valeur FROM tb_sommaire WHERE [variable] = 'NomInstallation') AS s2 ON s1.otp = s2.otp) q ON f.otp = q.otp WHERE f.otp = [currotp] AND f.client LIKE [currclient] AND f.axe LIKE [curraxe] AND Datevalue([dateinsertion]) Between [startdate] And [enddate] ORDER BY f.dateinsertion DESC;
始终最好避免将所有字段都引用为*。字段(列)应按名称列出。
以上内容取决于创建一个派生表,该表将Otp对tb_sommaire中的行进行分组。您可以将派生表剪切并粘贴到查询设计屏幕(sql视图)中,以检查返回的行是否符合预期。