Dar*_*ill 4 mysql database-design
例如,说我的表中有以下条目:
ID - 1
Name - Daryl
ID - 2
Name - Terry
ID - 3
Name - Dave
ID - 4
Name - Mitch
Run Code Online (Sandbox Code Playgroud)
我最终希望在我的表中搜索一个特定名称,但显示所有关联的名称。例如,
搜索 Daryl 将返回 Terry、Dave 和 Daryl。
搜索特里将返回戴夫、达里尔和特里
搜索米奇只会返回米奇。
当前包含名称的表如下:
--
-- 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);
--
Run Code Online (Sandbox Code Playgroud)
以供参考。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
Run Code Online (Sandbox Code Playgroud)
但我觉得这会产生一个过于复杂的价值结构,有很多冗余输入。有没有更有效的方法来创建统一搜索?
整个操作的想法是每个名称都是个人。所以某些条目可以放在 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"
Run Code Online (Sandbox Code Playgroud)
当您在关联表中有“米奇”条目时,它会返回您达里尔,当您没有关联 Id 时,它将返回成员表中的名称。
如果你用“Daryl”检查这个,它会给你两个结果,
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"
Run Code Online (Sandbox Code Playgroud)
如果您希望将所有名称都放在一个列中,您可以将其GROUP_CONCAT用作另一个答案中建议的 @flash。
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |