精华内容
下载资源
问答
  • 一张表多个外键指向同一主键

    千次阅读 2018-06-08 14:51:00
    现在有两张  (a)  ======(想要的结果)=====》   (b) 因为第一次遇到这种,...适用于多个外键同时关联同个主键!  我的sql语句是: SELECT  a1.id, a1.userName userId, a...

    现在有两张表

        (a表)

                             ======(想要的结果)=====》  

     

     

          (b表)

     

    因为第一次遇到这种,想了想还挺有趣的。。。。适用于多个外键同时关联同个主键!    

    我的sql语句是:

    SELECT
        a1.id,
         a1.userName userId,
         a2.userName createUserId
    FROM
        (SELECT * FROM a) a1
    RIGHT JOIN b  ON a1.id=b.userId   (先右连接,以右表为主表,得到一条数据,然后就开始关联字段,ok,问题解决)
    LEFT JOIN a a2 ON a2.id=b.createUserId

    转载于:https://www.cnblogs.com/whiteme/p/9155644.html

    展开全文
  • 我们要查询出B_DATAVIEW表中的外键所对应的外键表中的名称 select ID, NAME, MASTERDATA, VIEWTYPE, (select name from T_BUSINESSSYSTEM where id = B_DATAVIEW.BUSISYS) BUSISYSNAME, (select name fro...

     

    我们要查询出B_DATAVIEW表中的外键所对应的外键表中的名称

    select
            ID, NAME, MASTERDATA, VIEWTYPE,
            (select name from T_BUSINESSSYSTEM where id = B_DATAVIEW.BUSISYS) BUSISYSNAME,
            (select name from T_BUSINESSSYSTEM where id = B_DATAVIEW.BUSIORGA) BUSIORGANAME,
            (select name from T_BUSINESSSYSTEM where id = B_DATAVIEW.BUSIVIEW) BUSIVIEWNAME,ENABLE
    from B_DATAVIEW

     

    展开全文
  • SQL--当一张表的两个外键指向同一主键

    万次阅读 热门讨论 2017-11-26 18:54:54
    最近遇到了这样一个问题,当一张表中有两个外键同时执行了另外一种的主键,如何建立一张视图,让这两个外键都找到相应的信息。来实例吧:第一张表,归还记录:第二张表,用户:问题就是,归还记录表里有两个字段,...

    最近遇到了这样一个问题,当一张表中有两个外键同时执行了另外一种表的主键,如何建立一张视图,让这两个外键都找到相应的信息。

    来实例吧:

    第一张表,归还记录:

    这里写图片描述

    第二张表,用户表:

    这里写图片描述

    问题就是,归还记录表里有两个字段,applicantUserID, operUserID,分别是申请人ID和操作人ID,他们作为外键同时指向了用户表的userID,现在想通过这两个外键获取他们各个ID对应的姓名,即userName.

    分析:

    当我们表里只有一个外键与另外一张表关联的时候是很容易找到相应的userName的,但是现在是两个外键,我们不能将这两个外键同时与另一个主键做关联,这在数据库里是不合规则的,所以我们需要分别关联两次。

    解决办法:

    SELECT
        t_a.userName,
        t.userName
    FROM
        (SELECT * FROM T_User) AS t_a
    RIGHT JOIN T_ReturnLog r ON t_a.userID = r.applicantUserID
    LEFT JOIN T_User t ON t.userID = r.operUserID;

    效果展示:

    这里写图片描述

    解析:

    因为我们需要将T_ReturnLog与T_User关联两次,但是数据库不允许对同一张表同时关联两次,所以现查询表的所有内容 As t_a 这个时候 t_a作为一张新表和T_User的内容是一样的。

    • 第一次做右连接,将t_a与T_ReturnLog右连接,这时可以通过t_a.userName查到applicantUserID对应的用户姓名。
    • 第二次做左连接,将T_ReturnLog与T_User左连接,这时可以通过t.userName查到operUserID对应的用户姓名。
    • 所以select的时候是t_a.userName和t.userName.
    • (ps:T_User新表命名为t_a表; T_User重命名为了t表, T_ReturnLog重命名为了 r表)

    关于连接:

    为什么第一次用右连接,第二次用左连接?
    第一次将t_a表与r表关联,这个时候做右连接,条件是t_a.userID=r.applicantUserID,即将要右边的r表作为主表,r表的数据是不能少的,从t_a中拿到相应的申请人姓名。
    第二次将r表与t表关联,做左链接,即r表依然是主表,条件是r.operID=t.userID拿到t表中相应的操作人姓名。
    上篇博客总结关于SQL的四种连接,如有需要,请跳转:SQL左右内外连接

    小结:

    因为要根据r表中的两个ID列找到t表中相应的负责人姓名,所以r表任何时候都是要作为主表与另外一张表作连接。而且因为不能同时连接同一张表,所以要查询t 表内容作为另外一张新表嵌套进去。 ps:数据库的查询需要好好分析理清楚思路。

    展开全文
  • [iframe=http://community.csdn.net/games/gamepawnsimple.aspx?id=12][/iframe] 现在要多表连接,如何将它们区分开来?
  • 之间有一对多、多对多的关系,只要涉及到之间的关联们就会涉及到外键...kinds和user是一对多的关系,kinds的工种发生变化的话,那么user中牵扯到多个人的工种发生变化 user kinds   ...

    表与表之间有一对多、多对多的关系,只要涉及到表与表之间的关联们就会涉及到外键和主键

    知识点:

     

    那么怎么设置外键呢?

    demo:

    现在有两张表,user表(编号、姓名、职务、工种、部门)、kinds表 (工种、工种描述),

    kinds表和user表是一对多的关系,kinds表的工种发生变化的话,那么user表中牵扯到多个人的工种发生变化

    user表

    kinds表

     

    一对多关系,在多的一方设置外键指向另一方的主键

    use表中设置kinds字段作为外键的步骤如下:

    展开全文
  • sql | 一张表有【两个外键

    千次阅读 2019-07-17 14:10:00
    要求1:现在要通过repair_id查询出worker两张中的信息: 连接: select * from repair t1,client_info t2 where t1.client_id = t2.client_id and t1.client_id="1" 外连接:left outer join(保留repair原...
  • mysql在中添加多个外键

    千次阅读 2020-04-19 16:24:34
    建表时创建外键: CREATE TABLE`xh` ( `id` int(100) unsigned NOT NULL AUTO_INCREMENT COMMENT , `cl_id` smallint(3) unsigned NOT NULL COMMENT, `title` varchar(100) COLLATE utf8_unicode_ci NOT NULL ...
  • 在Flask的开发中,我们势必会遇到两张之间存在多个外键的情况。例如,现在有两张一张表是`User`,另一张表是`Article`。一篇文章的作者`author_id`可以设置外键关联`User`,同时文章的审稿人`reviewer_id`也...
  • SELECT TF_SCHOOL_DORMITORY_INFO.*, tsi.STAFF_NAME “ceoName”, ts_staff_info.STAFF_NAME AS “houseMasterName” FROM ( SELECT * FROM ts_staff_info ) tsi right join TF_SCHOOL_DORMITORY_INFO ON tsi.STAFF...
  • 建表时创建外键: CREATE TABLE`xh` ( `id` int(100) unsigned NOT NULL AUTO_INCREMENT COMMENT , `cl_id` smallint(3) unsigned NOT NULL COMMENT, `title` varchar(100) COLLATE utf8_unicode_ci NOT NULL ...
  • 外键通常在实际工作中,数据库中表格都不是独立存在的,且之间是有种联系的,比如两张表格,一张为分类category,一张为商品product。在分类中有两信息,cid、cname,商品中有三数据信息pid、name...
  • 多表操作_外键_关联_查询

    千次阅读 2017-11-27 15:48:45
    外键是指引用另一个表中的一列或列,被引用的列具有主键约束或唯一约束。(2)目的: 外键用于建立和加强两个表数据之间的连接。(3)概念: a. 主: 被引用的。 如 grade b.从 : 引用外键 。如 ...
  • 需求是这样的,一资源有分类r_class_id(分类id对应的外键) 创建者r_up_creator(用户id对应的外键) 审核者r_ver_id (用户id对应的外键),这时候该怎么将其都查询出来呢? 首先用左连接: select ...
  • 在项目开发中遇到这么一例子,首先产品 tb_product ----------------------------- id name 1 手机 2 电脑 3 笔记本 第二张表 tb_product_chain(产品链) ------------------------------------...
  • 我在Shop 中创建了一主键(ID,UserID)(因为张表分别需要用到这其中的一列名),在另一张表创建外键引用时报错: "消息 1776,级别 16,状态 0,第 1 行 在被引用 'Shop' 中没有与外键 'FK__Product' 中...
  • 在我们编写数据库的过程中, 可能经常会遇到一种情况, 就是一张表内的外键属性过多, 这种时候如果我们给每一个外键属性都建立一个外键属性的话, 那么会显得我们的数据库过于冗余, 这样的数据库注定不是一个好的...
  • 添加外键约束名字一定不能重复如何添加外键方法一:直接在属性值后面添加 create table score( cscore int(11), st_id int(50) references student(id), cs_id int(30) references classes(id), primary key(st_id,...
  • 首先说明一点,这设计完全没有问题的,一般金融项目经常这样设计,比如合同中的借款人和担保人都指向用户。 假如我们现在有两张: 一用户、一任务 user: 用户Id:id 用户名:username task: ...
  • 来源:Java联盟 看到好多伙伴留言~ 想要了解MySQL的多表查询~ ...在查询之前呢我们要知道,在数据库中一般会有很数据来存储信息,之间会存在如下的关系: 1)一对的关系: 例如: ...
  • 为了解决数据冗余高的问题,可以先独立出一张表,然后使用外键来约束这两张。被约束的称为副,约束别人的称为主,而外键设置在副上,主的参考字段通用为主键。注意:添加数据时,先添加主,再添加副...
  • 一个关联多个表外键

    千次阅读 2006-06-10 18:54:00
     /* foreign key productID references product(productID), /*货品编号(外键)*/ */  depotName varchar(50) not null, /*仓库名称*/   productName varchar(50) not null, /*货品名称*/  spec varchar(50)...
  • 例如用户 user_id user_name 1 zhangsan ... 另一张money,表示了借钱的关系 id from to how 1 1 2 100 2 3 4 100 关联查询 select m.id,u1.use...
  • 多表设计—外键约束 作用:保证数据的完整性 定义外键约束: (1)可以直接在create语句中定义外键  foreign key 当前表名(字段名) references 目标表名(目标的主键) (2)创建完语句后,可以直接使用修改...
  • 这是一位朋友提出的疑问,EF 映射主键可以对应多个外键吗?如果外键设置级联删除会发生什么情况?下面做一个测试,示例实体代码: public class Blog { public Blog() { Post1s = new List<Post1>...
  • create table a( id varchar(20) not null primary key, name varchar(30) ); create table b( id varchar(20) not null primary key ); ...id varchar(20) not null primary key ...alter table b add constraint a_id ...
  • 实际开发中,一项目通常需要很张表才能完成 已知: 有一张商品(product) 需求:修改分类名称,将所有的“电脑办公”修改为“笔记本电脑” 假如现在电脑办公的数据有几万条,为了数据的使用和维护更加方便...
  • 目录表里的外键id存多个用户,有12345这种id的时候怎么处理发生情景解决办法 表里的外键id存多个用户,有12345这种id的时候怎么处理 发生情景 解决办法 在有多个id的字段上前后拼接占位符,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,873
精华内容 19,949
关键字:

一张表多个外键