9.联表查询JoinON详解


JoinON

查询参加考试的同学(学号,科目名称分数),这些参数是在2个table中,需要用join连接  需要有一个关联的参数

1.INNER JOIN 并集

SELECT `sid`,`sname`,`cname`
FROM `student` AS a
INNER JOIN `course` AS c

on s.sid=c.sid

 

 

 2.RIGHT JOIN

 

 

3. LEFT JOIN 

SELECT `sname`,`cname`
FROM `student` AS a
LEFT JOIN `course` AS c
ON a.sid=c.sid

 

 

操作 描述
INNER JOIN 如果表中至少一个匹配,就返回行
LEFT JOIN  会从左表中返回所有的值,即使右表中没有匹配
RIGHT JOIN  会从右表中返回所有的值,即使左表中没有匹配

join(连接的表) on 连接查询  on代表查询的条件

where 等值查询

from a left join b 以a表为基准

SELECT `score`,`tid`,`tname`
FROM `sc` s
RIGHT JOIN `course` c
ON s.sid=c.sid
INNER JOIN `teacher` t
ON c.`cname`=t.`cname`

 自连接及连表查询

自连接:自己的表跟自己的表连接  一张表拆分成2张一样的表

 

CREATE TABLE `category`(
`categoryid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主题id',
`pid` VARCHAR(30) NOT NULL COMMENT '父id',
`categoryName`VARCHAR(50) NOT NULL COMMENT '主题名称',
PRIMARY KEY (`categoryid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

 

INSERT INTO `category`(`categoryid`,`pID`,`categoryName`)
VALUES('2','1','信息技术'),('3','1','软件开发'),('4','3','数据库'),('5','1','美术设计'),('6','3','web开发'),('7','5','ps技术'),('8','2','办公信息')

 

 

 

父类:

 

categoryName categoryid
信息技术 2
软件开发 3
美术设计 5
   

子类:

 

pid categoryid  categoryName
3 4 数据库
3 6 web开发
5 7 ps技术
2 8 办公信息

                                                          

子类的父id=父类的categoryid

操作:查询父类对应子类的关系

父类 子类
信息技术 办公信息
软件开发 数据库
软件开发 web开发
美术设计 ps技术

 

--查询父/子类信息

SELECT a.`categoryName` AS '父栏目',b.`categoryName` AS '子栏目'
FROM `category` AS a,`category`AS b
WHERE a.`categoryid`=b.`pid`

 

 查询学员的


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM