php - 关于博客文章、分类、标签的mysql查询问题
黄舟
黄舟 2017-04-11 10:09:16
[PHP讨论组]

最近在做一个mysql+nodeJS的博客,只是用来练手,由于PHP不会,所以用node作为后台语音开发
遇到的查询问题是
文章和分类是一对一的
文章和标签是一对多的
请问这个mysql怎么写,在下是前端,会点简单的mysql,所以就当学习这个吧,最好能丢出sql语句我琢磨琢磨

表结构如下图

图片来源于图片来源,我就没有去做,只是合并了下

跪求各位的文章详情查询的sql语句

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
高洛峰

用关联查询,或者in子查询
首先你要提供你的查询需求,要查什么,查询条件是什么,查询结果是什么。讲清楚场景才能写出SQL来

PHP中文网

我试着写了一下,效率可能低了一点,不过功能应该是对的

CREATE TABLE `articles` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `title` varchar(50) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

CREATE TABLE `tags` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(50) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

CREATE TABLE `tag_links` (
    `aid` int(11) NOT NULL,
    `tid` int(11) NOT NULL,
    PRIMARY KEY (`aid`,`tid`)
);

-- insert demo data

INSERT INTO `articles` (`id`,`title`) VALUES (1,'xxx'),(2,'a'),(3,'b');
INSERT INTO `tags` (`id`,`name`) VALUES (1,'php'),(2,'java'),(3,'sql');

INSERT INTO `tag_links` (`aid`,`tid`) VALUES (1,2),(1,3);
INSERT INTO `tag_links` (`aid`,`tid`) VALUES (2,1),(2,3);

-- query statement

SELECT a.title as 'title',
(
    SELECT GROUP_CONCAT(t.name,' ') FROM `tags` t 
    LEFT JOIN `tag_links` tl 
    ON t.id=tl.tid 
    WHERE tl.aid=a.id
) as 'tags'
FROM `articles` a;
高洛峰

先查出文章记录,在查对应的标签关联,然后查找标签关联对应标签表的记录

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号