微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

访问第一条记录上的联接

如何解决访问第一条记录上的联接

| 我在Access数据库中有两个表,tblProducts和tblProductGroups。 我正在尝试运行将两个表都连接在一起的查询,并为每个产品带回一条记录。问题在于,当前的设计允许产品在tblProductGroups表中列出的数目超过1-即产品可以是多个组的成员(我没有设计这个!) 查询是这样的:
select tblProducts.intID,tblProducts.strTitle,tblProductGroups.intGroup 
from tblProducts 
inner join tblProductGroups on tblProducts.intID = tblProductGroups.intProduct 
where tblProductGroups.intGroup = 56 
and tblProducts.blnActive 
order by tblProducts.intSort asc,tblProducts.curPrice asc
目前返回的结果如下:
intID | strTitle | intGroup
1     | Product 1 | 1
1     | Product 1 | 2
2     | Product 2 | 1
2     | Product 2 | 2
而我只希望联接基于第一个匹配记录,因此将返回:
intID | strTitle | intGroup
1     | Product 1 | 1
2     | Product 2 | 1
Access中有可能吗? 提前致谢 铝     

解决方法

此选项运行子查询以查找每个tblProducts.intID的最小intGoup。
SELECT tblProducts.intID,tblProducts.strTitle,(SELECT TOP 1 intGroup 
   FROM tblProductGroups 
   WHERE intProduct=tblProducts.intID 
   ORDER BY intGroup ASC) AS intGroup
FROM tblProducts 
WHERE tblProducts.blnActive 
ORDER BY tblProducts.intSort ASC,tblProducts.curPrice ASC
    ,创建一个新查询qryFirstGroupPerProduct:
SELECT intProduct,Min(intGroup) AS lowest_group
FROM tblProductGroups 
GROUP BY intProduct;
然后将qryFirstGroupPerProduct(而不是tblProductsGroups)加入到tblProducts中。 或者,您可以根据需要将其作为子查询而不是单独保存的查询。     ,这对我有用。也许这可以帮助某人:
SELECT 
    a.Lagerort_ID,FIRST(a.Regal) AS frstRegal,FIRST(a.Fachboden) AS frstFachboden,FIRST(a.xOffset) AS frstxOffset,FIRST(a.yOffset) AS frstyOffset,FIRST(a.xSize) AS frstxSize,FIRST(a.ySize) AS frstySize,FIRST(a.Platzgr) AS frstyPlatzgr,FIRST(b.Artikel_ID) AS frstArtikel_ID,FIRST(b.Menge) AS frstMenge,FIRST(c.Breite) AS frstBreite,FIRST(c.Tiefe) AS frstTiefe,FIRST(a.Fachboden_ID) AS frstFachboden_ID,FIRST(b.BewegungsDatum) AS frstBewegungsDatum,FIRST(b.ErzeugungsDatum) AS frstErzeugungsDatum
FROM ((Lagerort AS a) 
LEFT JOIN LO_zu_ART AS b ON a.Lagerort_ID = b.Lagerort_ID)
LEFT JOIN Regal AS c ON a.Regal = c.Regal
GROUP BY a.Lagerort_ID
ORDER BY FIRST(a.Regal),FIRST(a.Fachboden),FIRST(a.xOffset),FIRST(a.yOffset);
我在表LO_zu_ART上有Lagerort_ID的非唯一条目。我的目标是仅使用从LO_zu_ART找到的第一个条目来匹配Lagerort。 诀窍是在除分组的列之外的任何列上使用FIRST()。这也可以与MIN()或MAX()一起使用,但我尚未对其进行测试。 另外,请确保使用\“ AS \”语句不同于原始字段来调用字段。我使用了frstFIELDNAME。这很重要,否则我会出错。     ,这不是很理想,但是如果您要引入几千条记录,这将起作用: 创建一个查询,该查询从一张表中获取tblProducts.intID的最大值,并将其命名为qry_Temp。 创建另一个查询,然后将qry_temp联接到要联接的表上,您应该得到结果。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。