查找连接对

问题描述 投票:0回答:1

[假设我们在mySQL数据库中有一个表,其中fname与另一个fname(BB_Connection_name)有连接,我们希望通过查询查找一对在彼此之间找到连接的朋友。

例如Sidharth和Asim彼此都有BBid和BB_Connection_ID

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9hZEpQVy5wbmcifQ==” alt =“在此处输入图像描述”>

我一直在寻找父亲,儿子和孙子问题的类似案例,但是并不是每个父亲都有一个儿子,因此内在的联系使他们更容易解决。我尝试使用它,但是没有用。

这里我需要检查每个fname(A)的BB_Connection_ID,然后相应的fname是否具有A的BBid作为他的BB_Connection_ID。

将要选择的对应该像Sidharth Asim我们需要找到彼此具有连接ID的对。

================================================ =========================

Code for recreation of the table:
-----------------------------------------------------------------------------
create table world.bigbb(
BBid int not null auto_increment,
fname varchar(20) NOT NULL,
lname varchar(30),
BBdays int not null,
No_of_Nom int,
BB_rank int not null,
BB_Task varchar(10),
BB_Connection_ID int,
BB_Connection_name varchar(10),
primary key (BBid)
);


insert into world.bigbb (fname, lname, BBdays, No_of_Nom, BB_rank, BB_Task, BB_Connection_ID, BB_Connection_name)
values 
('Sidharth', 'Shukla', 40, 4, 2, 'Kitchen', 11, 'Asim'),
('Arhaan', 'Khan', 7, 1, 9, 'Kitchen', 16, 'Rashmi'),
('Vikas', 'Bhau', 7, 1, 8, 'Bedroom', 11, 'Asim'),
('Khesari', 'Bihari', 7, 1, 12, 'Kitchen', 9, 'Paras'),
('Tehseem', 'Poonawala', 7, 1, 11, 'Washroom', 12, 'Khesari'),
('Shehnaaz', 'Gill', 40, 4, 4, 'Washroom', 9, 'Paras'),
('Himanshi', 'Khurana', 7, 0, 7, 'Bedroom', 8, 'Shefali'),
('Shefali', 'Zariwala', 7, 1, 10, 'Bedroom', 1, 'Sidharth'),
('Paras', 'Chabra', 40, 3, 1, 'Bathroom', 10, 'Mahira'),
('Mahira', 'Sharma', 40, 4, 5, 'Kitchen', 9, 'Paras'),
('Asim', 'Khan', 40, 3, 3, 'Bathroom', 1, 'Sidharth'),
('Arti', 'Singh', 40, 5, 6, 'Captain', 1, 'Sidharth'),
('Sidharth', 'Dey', 35, 6, 16, 'None', 14, 'Shefali'),
('Shefali', 'Bagga', 38, 5, 15, 'None', 13, 'Sidharth'),
('Abu', 'Fifi', 22, 5, 17, 'None', 11, 'Asim'),
('Rashmi', 'Desai', 38, 5, 13, 'None', 17, 'Debolina'),
('Debolina', 'Bhattacharjee', 38, 5, 14, 'None', 16, 'Rashmi'); 
mysql sql
1个回答
0
投票

一种解决方案是自联接表:

select
    b1.fname name1,
    b2.fname name2
from bigbb b1
inner join bigbb b2
    on  b1.BB_Connection_ID = b2.BBid 
    and b2.BB_Connection_ID = b1.BBid 
    and b1.BBid < b2.BBid

这将为您提供每对一条记录,该记录在第一列中具有最小的BBid

demo on DB Fiddle与您的示例数据一起返回:

名称1 |名称2:------- | :-------希德哈特|阿西姆Paras |马希拉希德哈特|谢法利拉什米|德波利娜
© www.soinside.com 2019 - 2024. All rights reserved.