2 carlgk CarlGK 于 2017.09.05 14:08 提问

sqlserver中,两张表,B表可以放A表的列吗,还有很多地方都要用到某些值,那要放在哪张表里。 10C

两张表像这样可以吗?B表可以放A表的列
create table A
(
A_Id int ,
A_Name nchar(10),
A_Sex nchar(10)
)
create table B
(
B_Id int,
A_Name nchar(10),
B_dept nchar(10)
)
还有,比方说一个上次操作日期分别会在操作员页面,小组长页面等等表中用到,那到底要放在哪张表里,以下是我自己想的,这个上次操作日期lastDate 肯定不能有两个,难道看它在流程上第一次出现在哪个表里??
刚刚接触c#和sql,请大神们详细解答下,谢谢啦

8个回答

qq_36675624
qq_36675624   2017.09.05 14:24

1.你的表里面没有约束吗,每一张表至少要有一个主键,可以去看看一些约束
2.B表要放A表的列,可以通过外键的约束做到,但是外键在主表中必须有主键(或者唯一键)约束
3.如果你两个表用外键连起来了,如果在多个页面要用到一些数据,可以把两个表用联合查询(join on)连接起来,在去筛选一下,就可以了
4.你要是用联合查询,lastdata这两张表随便放

嘿嘿,好好学,年轻人

Simor
Simor   2017.09.05 15:41

你可以把同一个字段设置成外键,这样更方便查询,或者你创建一张中间表进行操作

D2012LY
D2012LY   2017.09.05 15:50

create table A
(
A_Id int primary key ,
A_Name nchar(10),
A_Sex nchar(10)
last_date date
)
create table B
(
B_Id int primary key,
A_Name nchar(10) ,
B_dept nchar(10),
FOREIGN KEY (A_Name) REFERENCES A(A_Name)
)

KevinSilent
KevinSilent   2017.09.05 23:35

可以,多个表可以共用一个表的某一列数据(域),只需要把这列中的数据与其他表的建立外键约束关系就可以了,
就拿你举得例子来展开,假如要公用A的A_Name这列,具体实现代码如下:
create table A
(
A_Id int ,
A_Name nchar(10) primary key ,
A_Sex nchar(10)
)
create table B
(
B_Id int,
B_Name nchar(10),
B_dept nchar(10),
foreign key(B_Name) references A(A-Name)
)
这样的话b表中的b_name这列的数据在你进行相关处理的时候必须与a中的数据保持一致,如果不一致的话编译的时候就会报错,
需要注意的是建立外键约束的时候定义的相关变量数据类型必须完全一致,而且所公用的那列数据必须设置为主键。希望能解决
你的问题。

qq_40090700
qq_40090700   2017.09.06 09:36

你这个我不知道是想创建表的时候,让你的表b中有表A的字段还是什么,如果是创建就是外键引用主键,如果是查询就很简单了

weixin_39892922
weixin_39892922   2017.09.06 18:48

你的描述很乱,自我感觉你只要用外键就很简单

qq_35491254
qq_35491254   2017.09.08 11:40

B表 用A表的主键关联就可以了, 感觉你是想做一个 流水记录而已

qq_38486475
qq_38486475   2017.12.20 21:43

两个表有相同的属性,可以把值放在A表,B表用外键

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
查找sqlserver数据库中,某一字段在 哪张表的哪一列中存在
有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的。只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。 前提是要将这个存储过程放在所查询的数据库。 CREATE PROCEDURE [dbo].[SP_FindValueInDB]  (  @value VARCHAR(1024)  )     
sqlserver 一张表两列都的值都相同处理
SELECT * FROM #T1 t1 WHERE  ( SELECT COUNT(*) FROM( SELECT DISTINCT s_cid,I_KaiZhangSL FROM #T1 WHERE s_cid=t1.s_cid  ) A )=1  AND (SELECT DISTINCT COUNT(s_ch) FROM #T1 WHERE s_cid=t1.s_cid )>=3
sqlserver 查找某个字段在哪张表里
select [name] from [库名].[dbo].sysobjects where id in(select id from [库名].[dbo].syscolumns Where name='字段名')
SQL中 将同一个表中的A列更新到B列,B列更新到A列
其实这个不是问题,直接写更新语句即可,可以参考下面动画演示: SQL source code: CREATE TABLE [dbo].[tbl] ( [id] INT, [a] NVARCHAR(10), [b] NVARCHAR(10) ) INSERT INTO [dbo].[tbl] VALUES (1,'123','456') SEL
sql 中怎么将A表插入B表中,,去除两张 表中含有的重复数据
insert into B(字段列表),select 字段列表 from A  where not exists(select * from B where a.keycol1 = b.keycol1) keycol1为A表和B 表中的字段,可能带有主键,可以此字段来判断A表和B表中是否存在相同的数据,where not exists是作为一个条件来判别从A表往B表中插入的数据不与B表已
Oracle中通过某个值查询属于哪张表,哪个字段
通过输入某个值查询数据库中哪个表,哪个字段包含。 1.创建存储过程 CREATE OR REPLACE PROCEDURE PROC_FindValueInDB (str in VARCHAR,results out sys_refcursor)AUTHID CURRENT_USER AS --执行SQL语句 sqlStr VARCHAR(4000); --判断表是否存在 ta
如何查询mysql数据库里某个字段在哪张表中
SELECT * from information_schema.columns where TABLE_SCHEMA='数据库名' and COLUMN_NAME='字段名'
sqlserver中如何把一个表中的某几列插入到另一个表中
需求:把A表中的column1及column2插入到表B中 sql语句:  insert into B ([column1],[column2]) select [column1],[column2] from A
面试题 两个表字段相同更新表A
面试题如下 有两个表 A 表 和 B 表 A 表有 id name B 表有 id name 需要把 B 表 name 放入 A 表中 重复就不添加了  Sql 如下 注: 如果存在主键自增会有问题 目前不考虑 insert into A select * from B where name not in (select name from A)
将一个表的数据的某些字段更新到另一个表里面的某些字段
update jwxt.jy_pyjhyq a set( a.PYJHZWMC ,a.ywpymbzw,a.ywpymbyw,a.ywpyyqzw,a.ywpyyqyw,a.zgxkzw,a.zgxkyw,a.jhxzzw,a.jhxzyw,a.pyjhyqzw,a.pyjhyqyw,a.qtyqzw,a.qtyqyw,a.tssmzw,a.tssmyw,a.xxsmzw,a.xxsmyw,a.