mysql - MS-ACCESS 如何创建查询以选择所有包含与另一个查询匹配的字段的记录?

标签 mysql ms-access

我知道这个问题听起来很困惑,但让我试着简化一下。

我有一个查询,我们称之为 query1,还有一个包含所有产品的更大的表。这是查询 1:

Item_Code    Description    Order_Qty    Option
1000         Prod1          5            Blue
1005         Prod5          3            Brown
1602         Prod6          1            Red
5620         Prod8          6            Yellow
9865         Prod2          1            Brown
1624         Prod3          3            Brown
9876         Prod12         4            Blue

现在在我的表格中,我有一个更大的相同格式的产品列表。我想创建一个包含所有蓝色、棕色、红色和黄色的新查询。它有效,但总是有重复项。

我不确定如何发布我的尝试,但我会解释我的尝试。我创建了一个新查询并包含了表和 query1。我在两者之间建立了关系,只包括“选项”相等的行。但由于某种原因,生成的查询将重复出现。如:

Item_Code    Description    Order_Qty    Option
1000         Prod1          5            Blue
1009  <--    Prod2          6            Blue    
1009  <--    Prod2          6            Blue    
1010  <--    Prod9          7            Blue    
1010  <--    Prod9          7            Blue    
1011  <--    Prod11         9            Blue    
1011  <--    Prod11         9            Blue    
9876  <--    Prod12         4            Blue    
9876  <--    Prod12         4            Blue
1005  <--    Prod5          3            Brown
1005  <--    Prod5          3            Brown
9865  <--    Prod2          1            Brown
9865  <--    Prod2          1            Brown
1624  <--    Prod3          3            Brown
1624  <--    Prod3          3            Brown
9877         Prod99         7            Brown
1111  <--    Prod67         8            Brown   
1111  <--    Prod67         8            Brown    
1602         Prod6          1            Red
1752         Prod56         2            Red
5620         Prod8          6            Yellow

最糟糕的是,它不会总是重复。也许我做错了。

我知道这可能是 tldr 的情况,但如果有人能提供帮助那就太好了。

谢谢。

最佳答案

听起来您需要在查询中添加 GROUP BY 子句或 DISTINCT 关键字。

SELECT DISTINCT Item_Code, Description, Order_Qty, Option

(或单击 Access 中的任何选项执行相同的操作。)

根据您提供的信息,无法诊断查询返回“重复”行的原因。

all_products 中的一行与 query1 中的两行或更多行匹配时,查询将返回“重复”行,因此您可以从 中获取该行的副本>all_products 来自 query1 的每个匹配行。


如果您从查询 1 中获得一个不同的 Option 列表,您可能会获得更好的性能。 (我并不是真的“做”MS Access。我提出这个问题是因为它被标记为“mysql”。Jet 数据库引擎很酷,但它在多用户环境中不能很好地工作。)在 SQL 中服务器、Oracle、MySQL、DB2、Teradata 等。我们会这样写查询:

SELECT p.Item_Code
     , p.Description
     , p.Order_Qty
     , p.Option
  FROM mytable p
  JOIN ( SELECT q1.Option
           FROM query1 q1
          GROUP BY q1.Option
       ) q
    ON q.Option = p.Option

关于mysql - MS-ACCESS 如何创建查询以选择所有包含与另一个查询匹配的字段的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219876/

相关文章:

mysql - 如何在预定义的固定时间运行 MYSQL 查询?

c# - 排序 Access 数据(错误格式的日期时间)

c# - 从 ASP.NET 插入到 MS Access

sql - 使用SQL返回语法错误CREATE TABLE在MS ACCESS中创建 View

mysql - 获取按日期分组的最近 n 天的活跃用户数量

mysql - 如何在mysql中配置Saiku的维度

ms-access - 计算字段将多个字段合并为一个

mysql - 如何从 Access 导出 CSV?

php - Connection.php 第 651 行中的 Laravel QueryException : SQLSTATE[42S02]: Base table or view not found

php - 需要 php pdo 内爆数组并在 mysql 中插入多行