我是R的新手,我正在尝试编写R脚本来查找两个地方之间的相互产品。我的两个表的表结构如下所示:
表1
OriginPlace DestinationPlace
Tampere Turku
Turku Helsinki
Oulu Porvoo
表2
Place ProductId
Tampere Prod1
Tampere Prod2
Tampere Prod3
Turku Prod2
Turku Prod3
Helsinki Prod2
Oulu Prod1
Oulu Prod2
Porvoo Prod1
Porvoo Prod2
我希望我的结果表看起来像这样:
OriginPlace DestinationPlace MutualProducts
Tampere Turku Prod2
Tampere Turku Prod3
Turku Helsinki Prod2
Oulu Porvoo Prod1
Oulu Porvoo Prod2
实际数据要大得多。在这种情况下如何有效地使用for循环?提前谢谢。
答案 0 :(得分:0)
以下查询将解决问题(假设table1为第一个包含OriginPlace和DestinationPlace列的表)
SELECT
table1.OriginPlace,
table1.DestinationPlace,
table2.ProductId as MultiProducts
FROM table1
join table2 on table1.OriginPlace = table2.Place
join table2 as tb2 on (tb2.Place = table1.DestinationPlace AND
tb2.ProductId = table2.ProductId)
答案 1 :(得分:0)
虽然我使用MS SQL语法来回答这个问题,但它应该与其他SQL类似。
您需要将 table2 加入 table1 两次。使用 OriginPlace 列,使用列 DestinationPlace 一次,然后检查ProductId的值是否相同
这样可以满足您的需求:
select t1.OriginPlace
,t1.DestinationPlace
,t2a.ProductId as MutualProducts
from Table1 t1
left join table2 t2a on t1.OriginPlace = t2a.Place
left join table2 t2b on t1.DestinationPlace = t2b.Place
where t2a.ProductId = t2b.ProductId