求助大佬!为什么多表查询的结果这么奇怪
sqlserver吧
全部回复
仅看楼主
level 3
三个表之间的关系都是多对一,多个学生对应一个职业,多个职业对应一个公司,然后我查询已经就业的学生姓名,专业,职业,公司名的时候,一个学生对应到了多个职业中。这是为什么呢
2022年06月16日 16点06分 1
level 2
你把sql,三张表的数据都发出来呀
2022年06月17日 00点06分 2
嗯嗯发上去了,第一个是.sql,第二个是建表的语句
2022年06月17日 11点06分
level 3
USE [毕业学生就业管理系统]
GO
/****** Object: Table [dbo].[manager] Script Date: 2022/6/17 19:41:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[manager](
[managerNO] [char](10) NOT NULL,
[Mname] [char](20) NULL,
[Mid] [char](10) NULL,
[Mkey] [char](10) NULL,
[Mtel] [char](20) NULL,
CONSTRAINT [PK_MANAGER] PRIMARY KEY CLUSTERED
(
[managerNO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[公司] Script Date: 2022/6/17 19:41:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[公司](
[cno] [char](10) NOT NULL,
[cname] [char](20) NULL,
[require] [smallint] NULL,
[applicant] [smallint] NULL,
CONSTRAINT [PK_公司] PRIMARY KEY CLUSTERED
(
[cno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[学生] Script Date: 2022/6/17 19:41:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[学生](
[sno] [char](10) NOT NULL,
[pno] [char](10) NULL,
[sname] [char](20) NULL,
[ssex] [char](2) NULL,
[sbirthday] [date] NULL,
[splace] [char](20) NULL,
[swno] [char](10) NOT NULL,
[scno] [char](10) NULL,
[workflag] [bit] NULL,
CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED
(
[sno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[职业] Script Date: 2022/6/17 19:41:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[职业](
[pno] [char](10) NOT NULL,
[cno] [char](10) NULL,
[pname] [char](20) NULL,
CONSTRAINT [PK_职业] PRIMARY KEY CLUSTERED
(
[pno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
2022年06月17日 11点06分 3
level 3
1. 创建学生信息表以及完整性约束
create table 学生
(
sno char(10) not null,
pno char(10) null,
sname char(20) null,
ssex char(2) null,
sbirthday date null,
splace char(20) null,
swno char(10) not null,
scno char(10) null,
workflag bit null,
constraint PK_学生 primary key (sno),
foreign key (pno) references 职业(pno)
);
2. 创建公司信息表以及完整性约束
create table 公司
(
cno char(10) not null,
cname char(20) null,
require smallint null,
applicant smallint null,
constraint PK_公司 primary key (cno)
);
3.创建职业信息表以及完整性约束
create table 职业
(
pno char(10) not null,
cno char(10) null,
pname char(20) null,
constraint PK_职业 primary key (pno),
foreign key (cno) references 公司(cno)
);
2022年06月17日 11点06分 4
level 6
你三个表都没关联,肯定出笛卡尔积了
2022年07月01日 02点07分 5
噢噢!谢谢,是没有学到的知识[惊哭],那我应该再找找正确的关联方式对吗,我以为只需要建立外键就好了
2022年07月18日 15点07分
level 1
你查询语句可以发下吗,是不是没有用join关联
2022年07月28日 07点07分 6
是的是的,我没有用join关联那会,有人给我说了改了一下就好了,虽然还是不太懂join关联哈哈
2022年08月05日 10点08分
@牧羊的救赎🌙 嗯呢解决了就好
2022年08月11日 02点08分
1