Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在嵌套子查询中使用Select Distinct_Sql_Ms Access 2007 - Fatal编程技术网

Sql 在嵌套子查询中使用Select Distinct

Sql 在嵌套子查询中使用Select Distinct,sql,ms-access-2007,Sql,Ms Access 2007,我有一个select distinct查询,用于标识位置IDpk。但我想确定最终用户的位置名称。我以为子查询会返回它。但它返回的值为1。而不是单独运行select distinct查询时的实际位置ID。我似乎不明白为什么 SELECT Location.LocationID, Location.Location FROM Location WHERE (Location.LocationID)=( SELECT Count(*) AS UniqueLocations FROM (

我有一个select distinct查询,用于标识位置IDpk。但我想确定最终用户的位置名称。我以为子查询会返回它。但它返回的值为1。而不是单独运行select distinct查询时的实际位置ID。我似乎不明白为什么

SELECT Location.LocationID, Location.Location
FROM Location
WHERE (Location.LocationID)=(
    SELECT Count(*) AS UniqueLocations
    FROM (
        SELECT DISTINCT TransactionLocation
        FROM Transactions
        WHERE (Transactions.TransactionActivity) = [Enter Activity] 
         AND (Transactions.TransactionDate) BETWEEN [Enter the start date:] AND [Enter the end date:]
    )
);
事务表

TransactionID(pk)| TransactionEmployee|TransactionActivity|TransactionLocation|Date
1 | 1001 | 1 | 25 | 01/01/2014
2 | 1002 | 1 | 25 | 01/02/2014
3 | 1003 | 1 | 25 | 01/03/2014
LocationID(pk)|Location Name
24 | Chicago
25 | Pittsburgh
26 | Boston
位置表

TransactionID(pk)| TransactionEmployee|TransactionActivity|TransactionLocation|Date
1 | 1001 | 1 | 25 | 01/01/2014
2 | 1002 | 1 | 25 | 01/02/2014
3 | 1003 | 1 | 25 | 01/03/2014
LocationID(pk)|Location Name
24 | Chicago
25 | Pittsburgh
26 | Boston
谢谢
迈克

我想你可能想要这样的东西:

SELECT Location.LocationID, Location.Location
FROM Location
WHERE Location.LocationID IN 
  (SELECT DISTINCT TransactionLocation 
   FROM Transactions
   WHERE Transactions.TransactionActivity = [Enter Activity] 
   AND Transactions.TransactionDate Between [Enter the start date:] And [Enter the end date:]);

我想你可能想要这样的东西:

SELECT Location.LocationID, Location.Location
FROM Location
WHERE Location.LocationID IN 
  (SELECT DISTINCT TransactionLocation 
   FROM Transactions
   WHERE Transactions.TransactionActivity = [Enter Activity] 
   AND Transactions.TransactionDate Between [Enter the start date:] And [Enter the end date:]);

我想知道你想要实现什么。您想要ID等于两个给定日期之间发生给定活动的不同TransactionLocation数量的位置吗?我无法理解这一点=/Yes,选择Count*作为UniqueLocations,从中选择DISTINCT TransactionLocation FROM Transactions.TransactionActivity=[Enter Activity]和Transactions.TransactionDate在[Enter the start date:]和[Enter the end date:]之间;应该等于25。尽可能使用SO的内置标记格式,而不是像代码格式中的新行那样使用HTML标记。为什么您认为它应该等于25?从您的示例中我可以看出,从Transactions中选择不同的TransactionLocation,其中Transactions.TransactionActivity=[Enter Activity]和Transactions.TransactionDate在[Enter the start date:]和[Enter the end date:]之间确实返回25,但是你放在它周围的SELECT COUNT*将返回1,因为只有1个值,即25。它返回1而不是25的原因是你使用了COUNT,并且只返回了一个项目。我正在试图弄清楚你想要实现什么。您想要ID等于两个给定日期之间发生给定活动的不同TransactionLocation数量的位置吗?我无法理解这一点=/Yes,选择Count*作为UniqueLocations,从中选择DISTINCT TransactionLocation FROM Transactions.TransactionActivity=[Enter Activity]和Transactions.TransactionDate在[Enter the start date:]和[Enter the end date:]之间;应该等于25。尽可能使用SO的内置标记格式,而不是像代码格式中的新行那样使用HTML标记。为什么您认为它应该等于25?从您的示例中我可以看出,从Transactions中选择不同的TransactionLocation,其中Transactions.TransactionActivity=[Enter Activity]和Transactions.TransactionDate在[Enter the start date:]和[Enter the end date:]之间确实返回25,但您在其周围放置的SELECT COUNT*将返回1,因为只有1个值,即25。它返回1而不是25的原因是您使用了COUNT,并且只返回了一个项目。