gpt4 book ai didi

mysql - 相关名称蜘蛛网

转载 作者:行者123 更新时间:2023-12-04 16:30:46 26 4
gpt4 key购买 nike

例如,说我的表中有以下条目:

ID - 1
Name - Daryl

ID - 2
Name - Terry

ID - 3
Name - Dave

ID - 4
Name - Mitch
我最终希望在我的表中搜索一个特定名称,但显示所有关联的名称。例如,

Searching Daryl will return Terry, Dave & Daryl.

Searching Terry will return Dave, Daryl & Terry

Searching Mitch will only return Mitch.


当前包含名称的表如下:
--
-- Table structure for table `members`
--

CREATE TABLE `members` (
`ID` int(255) NOT NULL,
`GuildID` int(255) NOT NULL,
`ToonName` varchar(255) NOT NULL,
`AddedOn` date NOT NULL,
`AddedByID` int(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `members`
--

INSERT INTO `members` (`ID`, `GuildID`, `ToonName`, `AddedOn`, `AddedByID`) VALUES
(1, 1, 'Daryl', '2020-01-17', 5),
(2, 1, 'Terry', '2020-01-17', 5),
(3, 1, 'Mitch', '2020-01-17', 5),
(4, 1, 'Dave', '2020-01-17', 5);

--
以供引用。 GuildID 将是基于搜索者登录详细信息的默认搜索条件。有了这样的蜘蛛网,我将如何创建另一个表(或另一个列)以根据搜索条件创建组合搜索蜘蛛网结构?
我在想一些事情:
CREATE TABLE `Associated`(
`ID` INT(255) NOT NULL,
`MainID` INT(255) NOT NULL,
`SecondaryID` INT(255) NOT NULL,

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `Associated` (`ID`, `MainID`, `SecondaryID`) VALUES

(1, 1, 2) -- Daryl Associated With Terry
(2, 1, 4) -- Daryl Associated With Dave
但我觉得这会产生一个过于复杂的值(value)结构,有很多冗余输入。有没有更有效的方法来创建统一搜索?
整个操作的想法是每个名称都是个人。所以某些条目可以放在 Daryl 下,Terry 单独行动。但是,一次搜索将通过搜索一个名称将所有关联的名称汇集在一起​​,然后根据别名将总条目汇总在一起?

最佳答案

你可以试试这个

Select IFNULL(m.ToonName , members.ToonName) as ToonName 
from members
LEFT JOIN Associated on Associated.MainID = members.ID
LEFT JOIN members as m on m.ID = Associated.SecondaryID
Where members.ToonName = "Mitch"

当你进入
Mitch ”在关联表中它会返回你 达里尔 当您没有关联的 Id 时,它将从成员表中返回名称。

如果你会用 检查一下“达里尔” ,它会给你两个结果,
Select IFNULL(m.ToonName , members.ToonName) as ToonName 
from members
LEFT JOIN Associated on Associated.MainID = members.ID
LEFT JOIN members as m on m.ID = Associated.SecondaryID
Where members.ToonName = "Daryl"

如果您希望将所有名称放在一列中,您可以使用 GROUP_CONCAT正如@flash 在另一个答案中建议的那样。

关于mysql - 相关名称蜘蛛网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59794822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com