mysql多表查询

多表查询
SELECT 列名  (如果列名在两个表中都有出现,那么要以表名.列名的形式来指明列的归属)
FROM 表1 JOIN 表2 ON 表1.列名1=表2.列名1 (说明:等号两边的列名1就是表1和表2的公共列)
JOIN 表3 ON 表2.列名2=表3.列名2
WHERE 限制条件

例:

CREATE DATABASE IF NOT EXISTS ConstructionDB CHARSET utf8;
USE ConstructionDB;
CREATE TABLE T_flow_step_def(
step_no INT PRIMARY KEY,
step_name VARCHAR(30) NOT NULL,
step_des VARCHAR(64),
limit_time INT,
url VARCHAR(64) NOT NULL,
reserve VARCHAR(256)
);
CREATE TABLE T_flow_type(
flow_type_id CHAR(3) PRIMARY KEY,
flow_type_name VARCHAR(64) NOT NULL,
in_method_id CHAR(3) NOT NULL,
in_choice_id CHAR(3) NOT NULL,
reserve VARCHAR(256)
);
CREATE TABLE T_flow_procedure(
step_no INT,
flow_type_id CHAR(3),
serial_no INT,
limit_time INT,
reserve VARCHAR(30),
PRIMARY KEY(step_no,flow_type_id),
FOREIGN KEY(step_no) REFERENCES T_flow_step_def(step_no),
FOREIGN KEY(flow_type_id) REFERENCES T_flow_type(flow_type_id)
);
CREATE TABLE T_sub_project(
project_id VARCHAR(32),
sub_pro_id CHAR(2) DEFAULT '0',
flow_type_id CHAR(3) NOT NULL,
sub_pro_name VARCHAR(64),
usb_no VARCHAR(64) NOT NULL,
in_method_id CHAR(3) NOT NULL CHECK(in_method_id IN('1','2')),
in_scope_id CHAR(3) NOT NULL,
in_choice_id CHAR(3) NOT NULL,
proj_type_id CHAR(3) NOT NULL CHECK(proj_type_id IN('1','2','3')),
engin_type_id CHAR(3),
pack_type CHAR(1) NOT NULL DEFAULT '0',
grade_type_id CHAR(1) NOT NULL,
flag_done CHAR(1) DEFAULT '0',
flag_forcebreak CHAR(1) DEFAULT '0',
reserve VARCHAR(256),
PRIMARY KEY (project_id,sub_pro_id),
FOREIGN KEY(flow_type_id) REFERENCES T_flow_type(flow_type_id)
);
#插入数据
/*
给出的列的值的个数与列的个数相同
INSERT into 表名 VALUES (列的值);
*/
INSERT INTO T_flow_step_def VALUES(1,'中标公示','公示中标情况','30','http://localhost:8080/stepmenu.jsp','在规定时间内如有异议则请联系我们');
INSERT INTO T_flow_type VALUES('T01','开标','1','001','无');
INSERT INTO T_sub_project VALUES('P0001','01','T01','开标前','123456','1','F01','X01','X01','G01','1','1','1','1','无');
INSERT INTO T_sub_project VALUES('P0002','01','T01','开标前','123456','1','F01','X01','X01','G01','1','1','0','1','无');
INSERT INTO T_flow_procedure VALUES(1,'T01',1,7,'无');
#1.查询出招标方式代号为“1”的所有标段情况信息;
SELECT * 
FROM t_sub_project 
WHERE in_method_id='1';
#查询出所有完成标志为“0”的标段情况信息;
SELECT * 
FROM t_sub_project
WHERE flag_done='0';
#2.查询出流程类别名称为“开标”的所有标段情况;
/*
多表查询
SELECT 列名  (如果列名在两个表中都有出现,那么要以表名.列名的形式来指明列的归属)
FROM 表1 JOIN 表2 ON 表1.列名=表2.列名  (说明:等号两边的列名就是表1和表2的公共列)
WHERE 限制条件 
*/
SELECT SP.*
FROM t_sub_project SP JOIN T_flow_type FT ON SP.flow_type_id=FT.flow_type_id
WHERE flow_type_name='开标';

#3.查询所有的流程的步骤名称、流程步骤描述及流程类别名称。/*
/*
多表查询
SELECT 列名  (如果列名在两个表中都有出现,那么要以表名.列名的形式来指明列的归属)
FROM 表1 JOIN 表2 ON 表1.列名1=表2.列名1 (说明:等号两边的列名1就是表1和表2的公共列)
	 JOIN 表3 ON 表2.列名2=表3.列名2
WHERE 限制条件
*/
SELECT step_name,step_des,flow_type_name 
FROM  T_flow_step_def SP JOIN T_flow_procedure FP ON SP.step_no=FP.step_no
JOIN T_flow_type FT JOIN T_sub_project SPR ON FT.flow_type_id=SPR.flow_type_id;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值