码迷,mamicode.com
首页 > 数据库 > 详细

MySql连表之多对多

时间:2017-09-09 19:40:32      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:关系   ima   数据   pre   分析   blog   元素   mys   pen   

背景

每个男生和女生都可以选择自己最喜欢的几个人,可以是多个也可以使一个。

但是,在创建男生表的时候,女生表并没存在,所以不能在创表初期就在男生表中加入其喜爱的女生名单,而且名字冗余,存储浪费空间。

设计表

1、表一:man

技术分享

2、表二:woman

 技术分享

3、表三:man_to_woman

技术分享

  1. 小赵<-->小花
  2. 小赵<-->小朵
  3. 小赵<-->小楠
  4. 小孙<-->小雨
  5. 小钱<-->小楠
  6. 小李<-->小花

创建外键

技术分享

找到小赵喜欢的人

技术分享
1 SELECT
2     *
3 FROM
4     man_to_woman
5 LEFT JOIN man ON man_to_woman.man_id = man.nid
6 LEFT JOIN woman ON man_to_woman.woman_id = woman.nid
7 WHERE
8     man. NAME = "小赵"
Demo

分析SELECT * from man_to_woman LEFT JOIN man on man_to_woman.man_id = man.nid

从关系表中找到所有man中nid与关系表中的man.id相等的数据,将以man_to_woman为主,man只显示与之向对应的内容,man为字典表。

技术分享

分析LEFT JOIN woman on man_to_woman.woman_id = woman.nid

找到与上边结果中的woman_id相等的woman表中nid的所有元素,以上表为主,woman为字典表。

技术分享

分析where man.name = "小赵"

找到上边中man的name为小赵的,成功找到他的3个心仪对象

技术分享

MySql连表之多对多

标签:关系   ima   数据   pre   分析   blog   元素   mys   pen   

原文地址:http://www.cnblogs.com/wuwen19940508/p/7498927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!