我发现很难学习如何在 mySQL 中构建更复杂的查询。
希望通过这个问题,我可以更深入地了解如何在单个查询中开发多级查询。
我有一个标签系统。
tbl1: ktbridge
ktbridge_id
threads_id
keywords_id
tbl2: threads
threads_id
subject
etc
tbl3: keywords
keywords_id
keyword
related_id
以上是我目前的设置。
对于数据,我有:
INSERT INTO `ktbridge` (`ktbridge_id`, `threads_id`, `keywords_id`) VALUES
(1, 1, 9);
INSERT INTO `keywords` (`keyword_id`, `keyword`, `related_id`) VALUES
(5, 'Sports', 0),
(6, 'Baseball', 5),
(7, 'football', 5),
(8, 'Curling', 5),
(9, 'Pitchers', 6),
(10, 'Catchers', 6),
INSERT INTO `threads` (`threads_id`, `subject`, `body`, `users_id`, `timestamp`, `replystamp`) VALUES
(1, 'Sports - Baseball - Pitchers - Subject', 'Sports - Baseball - Pitchers - Body', 1, '2013-01-09 14:09:40', '0000-00-00 00:00:00');
这里的目标是返回与提供的关键字 ID 相关的线程。
困难的部分是,如果选择了“棒球”,它会返回棒球线程。但是,如果选择了“sports”,它会根据keywords
表中的“related_id”返回它下面的所有线程。因此它将返回所有基于棒球、足球和冰壶的线程。
这是一种可能吗?还是需要多次查询?提前致谢!