Zyg*_*ygD 6 sql ms-access select
构建我的第一个Microsoft Access SQL查询.那不应该这么难!
我有2张桌子:
属于GroupA
登录的用户.我只想向他显示分配给的Data
表行和列GroupA
,如下所示:
+--------+--------+--------+
| Group | Data3 | Data4 |
+--------+--------+--------+
| GroupA | 9 | 4 |
| GroupA | 1 | 5 |
+--------+--------+--------+
Run Code Online (Sandbox Code Playgroud)
我试过这个愚蠢的选择:
SELECT (select Data from AccessRights where GroupA = "y")
FROM Data
WHERE Data.Group = "GroupA";
Run Code Online (Sandbox Code Playgroud)
我使用这个查询:
SELECT
Data.[Group],
IIf((SELECT GroupA FROM AccessRights WHERE Data = "Data1")="y",[Data1],Null) AS Data_1,
IIf((SELECT GroupA FROM AccessRights WHERE Data = "Data2")="y",[Data2],Null) AS Data_2,
IIf((SELECT GroupA FROM AccessRights WHERE Data = "Data3")="y",[Data3],Null) AS Data_3,
IIf((SELECT GroupA FROM AccessRights WHERE Data = "Data4")="y",[Data4],Null) AS Data_4
FROM
Data
WHERE
((Data.[Group])="GroupA");
Run Code Online (Sandbox Code Playgroud)
对于这个结果:
Group | Data_1 | Data_2 | Data_3 | Data_4
--------+--------+--------+--------+--------
GroupA | | | 9 | 4
GroupA | | | 1 | 5
Run Code Online (Sandbox Code Playgroud)
Data1
我只是隐藏和的值Data2
。
如果您确实想隐藏列,则需要使用 VBA,我创建了一个 VBA 函数,该函数将根据您的组给出最终查询字符串:
Function myQuery(groupName As String) As String
Dim strResult As String
Dim rs As Recordset
Dim i As Integer
strResult = "SELECT [DATA].[Group]"
Set rs = CurrentDb.OpenRecordset("SELECT [Data], [" & groupName & "] FROM AccessRights WHERE [" & groupName & "] = ""y""")
For i = 0 To rs.RecordCount
strResult = strResult & "," & rs.Fields("Data").Value
rs.MoveNext
Next i
strResult = strResult & " FROM [Data] WHERE ((Data.[Group])=""" & groupName & """)"
myQuery = strResult
End Function
Run Code Online (Sandbox Code Playgroud)
例如; myQuery("GroupA")
将
SELECT [DATA].[Group],Data3,Data4 FROM [Data] WHERE ((Data.[Group])="GroupA")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1149 次 |
最近记录: |