有一个这样的表,格式为SQL或ms-access。

样品

ID  ID2 name    class   example
1   10  John    main    
2   10          
3   10          
4   10                  ~ is look at me.
5   20  Candice main    
6   20          
7   20                  ~ is in Japan.
8   20                  ~ is reading a book.
9   20          

我需要将示例字段(A)中的“〜”替换为具有与A相同的ID2和class =“ main”的名称字段的值。 如何制作联接语法?

结果

ID  ID2 name    class   example
1   10  John    main    
2   10          
3   10          
4   10                  John is look at me.
5   20  Candice main    
6   20          
7   20                  Candice is in Japan.
8   20                  Candice is reading a book.
9   20          

#1楼 票数:0

我认为您的表配置不正确。

您正在使用一个ID字段,在表上重复使用该字段,这一事实表明数据库设计有些糟糕。

我认为在两个表之间拆分数据可能会获得更好的结果,一个表包含示例,另一个表包含“ main”类。 然后,您将能够通过使用ID2字段的简单联接来联接两个表。

#2楼 票数:0

select m.[name] & replace(b.example, "~", "") as combined
from sample as m
inner join sample as b on m.id2 = b.id2
where m.[class] = "main"
and b.example not null 

#3楼 票数:0

尽管数据的结构非常复杂(无论出于何种原因),但要回答您的问题,您可以按以下方式进行操作:

SELECT 
   T1.[ID],
   T1.[ID2],
   T1.[name],
   T1.[class],
   iif(not isnull(T1.[Example]) and not isnull(T2.[Name]), Replace(T1.[Example], "~", T2.[Name]), null) As [Example]
FROM
   Data T1
LEFT JOIN Data T2 ON (T1.[ID2] = T2.[ID2] AND T2.[Class]="main")

这基于这样的假设:对于ID2的每个唯一值,只有一个记录的class = main记录(否则,您将获得行的重复)。

无需使用JOIN的替代方法是:

SELECT 
   [ID],
   [ID2],
   [name],
   [class],
   (iif(not isnull([example]), Replace([example], "~", nz((select top 1 [name] from Data T2 where T2.ID2 = T1.ID2 and T2.[class]="main" order by T2.[ID2]),"")),null)) as [ExampleNew]
FROM Data T1

  ask by user1610952 translate from so

未解决问题?本站智能推荐:

1回复

使用LEFT JOIN和INNER JOIN的MS-ACCESS

上面是我要执行的MS-ACCESS查询。 对于安全ID 14,我想做的事情很简单。我想在[Prior Month Return Tbl]中计算当前月的[Data 9至17 Monthly]表中前7至11个月的收益的乘积。 如果我使用内部联接,该查询工作正常,但如果[数据9至17月度]中没有
1回复

库存SQL查询的歧义错误,其中两个字段应相等以进行计算。 MS-ACCESS

有了这个简单的表组 ,我想进行清单区分不同供应商提供的同等产品,但是我在运行查询时遇到了“歧义错误”,尽管它可以工作。 我不知道该怎么解决。 这是我尝试过的查询:
1回复

MS-Access获取特定订购日期的产品价格

我有一张桌子,上面满是购买价格,像这样: 我还有一张满是订单的桌子,像这样: 我的目标是从该日期起获取每个订单的每个购买价格。 (例如:当我在5月(01/05)的第一天订购该产品时,它的成本为21.17欧元。当我在12月1日(01/12)的该订购时,它的成本为100,00欧元。
1回复

比较MS-Access中的两个表并仅查找/显示差异

我在MS Access中有两张表,一张具有当前活动客户端的表,一张具有整体客户端的表。 我需要将两者进行比较,并找出整个客户端表中哪些客户端未处于活动状态。 这两个表具有非常相似的结构(SSN,Fname,Lname,地址,邮政编码等)。 我尝试通过使用Access中的“查找不匹配查询
1回复

通过 vba/sql 在 Access 中加入多个表

我有一个表数据库,每列包含两列,第一列是代码,第二列是金额。 这些表是从每天创建的数据中提取的,如果代码由特定日期的外部事件触发,则该代码将包含特定日期的数据。 例如,2015 年 10 月 2 日的表格如下所示: 所以每个表都有相同的第一列(代码),但代码每天都会有所不同。 有时,我们可能会触
1回复

如何在Access中加入JOIN

我有三个表,并希望按如下方式加入它们:这些表是“客户”,“车辆”和“提醒”。 客户在Customer_Id上加入到Vehciles,车辆在Vehicle_ID上加入到提醒。 我想显示“客户”和“车辆”中的记录,这些记录或者在提醒中有记录,其中MOT字段是<> Y,或者在“提醒”中
2回复

Access上的内部联接SQL

我似乎无法理解这一点,并最终决定寻求帮助。 因此,我们需要找到在Store 25和Store 50购物至少10次的人的客户ID列表。 首先,我创建了代码以创建一个表,该表包含客户ID列表以及他们在该商店购物的次数计数。 原始交易数据针对每笔交易(针对所购买的每件商品)都有多行,因此具有
1回复

Access中的sql匹配

我有两个表,每个表都要与之匹配。 每个表上的列都是名称,并已尽我所能进行了标准化。 即使标准化了,两列也不完全相同,我需要根据这些列将表匹配在一起。 我已经完成了InStr函数,但是老板不满意。 而且内部联接也不正确。 我无所适从,试图找到第三种方式来做到这一点。 表1中的列