我正在努力寻找一种查询所需数据的好方法。我正在使用 mySQL 和 php。目前,我正在进行多个查询并为每个循环使用一堆,但是,我仍然无法获得必要的输出。
这可能是一个棘手的问题,所以我感谢任何努力解决这个问题的人!
我目前的表格如下:
topics_keywords (t_k_id, topic_id, keyword_id)
keywords (keyword_id, keyword)
topics (topic_id, subject, etc)
表topics_keyword
将有多个与同一个 topic_id 关联的关键字。
表keywords
只会为每个keyword_id 定义一个关键字。
如果有人查询特定关键字(即体育),我想返回与 topic_id 相关的所有相关关键字的列表。
在下面的 SQL 中,您将看到主题 3 与关键字 ID 的 3(体育)和 4(棒球)相关联。但是,请注意它也与keyword_id 2(hello) 相关联。
我只需要计算“运动”与棒球相关的次数。我说的很简单,但我想不出一个简单的方法来做到这一点。
基于以下数据的最终输出需要如下所示:
搜索词:“棒球”最终输出:
count | keyword
----------------
sports | 2
hello | 1
下面是一些 mySQL 来帮助浏览数据:
CREATE TABLE IF NOT EXISTS `keywords` (
`keyword_id` int(11) NOT NULL AUTO_INCREMENT,
`keyword` varchar(64) NOT NULL,
PRIMARY KEY (`keyword_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Dumping data for table `keywords`
--
INSERT INTO `keywords` (`keyword_id`, `keyword`) VALUES
(1, 'thebump'),
(2, 'hello'),
(3, 'baseball'),
(4, 'sports'),
(5, 'manga'),
(6, 'naruto'),
(7, 'one piece');
-- --------------------------------------------------------
--
-- Table structure for table `topics_keywords`
--
CREATE TABLE IF NOT EXISTS `topics_keywords` (
`t_k_id` int(11) NOT NULL AUTO_INCREMENT,
`topics_id` int(11) NOT NULL,
`keyword_id` int(11) NOT NULL,
PRIMARY KEY (`t_k_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
--
-- Dumping data for table `topics_keywords`
--
INSERT INTO `topics_keywords` (`t_k_id`, `topics_id`, `keyword_id`) VALUES
(1, 1, 1),
(2, 2, 2),
(3, 3, 3),
(4, 3, 4),
(5, 4, 3),
(6, 5, 3),
(7, 5, 4),
(8, 6, 3),
(9, 6, 4),
(10, 3, 2);
非常感谢!