我是一名大学生(因此是初学者),有一些Access任务要做,但我需要帮助,因为到目前为止它没有提供所需的结果。
我有一个包含网络日志记录的表Table1
。我感兴趣的领域是" cs-uri-stem",因为它包含所有URL GET请求。
我想选择TOP 25 images
(记录必须包含" cs-uri-stem"字段中的/ images /)。到目前为止,我尝试了以下方法,但没有成功:
SELECT TOP 25
FROM Table 1
WHERE "cs-uri-stem"="cs-uri-stem"
HAVING [/images/];
警告窗口一直显示说SELECT请求不正确,但我不知道这是否是由于我所在大学使用西班牙语而导致的。
提前致谢!
我的问题的可能答案,提供了Siyual和MCP_infiltrator的帮助[再次感谢!]:
SELECT TOP 25
Table1.[cs-uri-stem],
Count(Table1.[cs-method]) AS TotalHits
FROM Table1
WHERE (((Table1.[cs-uri-stem]) Like '*/images*'))
GROUP BY Table1.[cs-uri-stem]
ORDER BY Count(Table1.[cs-method]) DESC`
这将提供仅列出访问图像的前25个列表,没有重复,而不是所有网址。
答案 0 :(得分:3)
您的查询有几个问题,但这应该适用于您需要的内容:
SELECT TOP 25 Images
FROM Table1
WHERE cs-uri-stem Like '%/images/%'
至于什么/为什么出错了......
对于Select
声明,您不能指定您想要获得的任何字段。我在您的问题中假设您有一个名为images
的字段,您想要回来。如果是某个其他字段,请更改该字段,或者只使用SELECT TOP 25 *
来获取所有内容。
您的From
子句在表名中有一个空格。
你的Where
条款毫无意义。这是您需要为查询提供逻辑的地方。在这种情况下,您希望/images/
字段中包含cs-uri-stem
的任何内容。 Like
是您需要在此处使用的运算符。
最后,您的Having
完全错了。它没有正确使用,即使在正确的环境中也没有。
答案 1 :(得分:0)
SELECT TOP 25 *
FROM TABLE1
WHERE CS-URI-STEM LIKE "*/images*"
这将从表格中选择前25个记录和所有列cs-uri-stem
中包含/images
的列。当您使用告诉数据库的*
时,您希望拉出表的所有列以供查看。
这是一个描述其中一些内容的链接
See Here: Select Top n
in MS-Access
答案 2 :(得分:0)
我会创建三个查询:
QUERY1:
SELECT Images
FROM Table1
WHERE cs-uri-stem Like '*/images/*'
QUERY2:
select images, count(images) as image_count
from query1 as q
group by images
QUERY3:
select top 25 *
from query2
order by image_count desc
query3应该包含您感兴趣的25个结果。
答案 3 :(得分:-1)
SELECT TOP 25 * FROM Table1 WHERE cs-uri-stem LIKE '%/images/%'