在 table 中查找元组对的实例,一列和另一列的列名相同?

Finding instances of pairs of tuples in a table, column names are the same for one column, and for another column?

假设我有一个名为 "TRANSIT" 的 table,其中包含列(city_name、highway_name),它会告诉您哪些高速公路经过城市。

使用关系代数(或 SQL 如果这更容易,我可以将其翻译成 RA),我想 select 所有对的高速公路,它们至少一起穿过两个城市,例如,如果有 A 公路和 B 公路,它们都去 A 城市和 B 城市,我想 select 这两条公路

到目前为止,我只有 select 对高速公路,它们一起穿过一个城市:

πC1.highway_name, C2.highway_name (σ C1.highway_name = C2.highway_name (σ C1.city_name ≠ C2.city_name ( ρ C1 (TRANSIT) X (ρ C2 (TRANSIT)))))

但是,我需要它returns c1.highway_name, c2.highway_name 一起经过两个或多个城市

在SQL中,您可以使用joingroup by计算两条高速公路共享的城市数量:

select hc1.highway, hc2.highway, count(*) as NumInCommon
from highwaycity hc1 join
     highwaycity hc2
     on hc1.city = hc2.city and
        hc1.highway < hc2.highway
group by hc1.highway, hc2.highway
having count(*) >= 2;

祝你好运,将其转化为关系代数的符号。