php传输的多个id集中为一条记录,如何将多个ID应用于Mysql中的一条记录?
在实体关系语言中,这称为多对多关系.一个产品可以有多个类别,一个类别可以有多个产品.
要在关系数据库中执行此操作,您需要三个表.
product: product_id, name, description, etc
category: category_id, catname, catdescription, etc
然后用这个所谓的联接表建立产品和类别之间的关系.
product_category: product_id, category_id
product_category的主键是两列在一起-这是复合主键.
如果您有这些产品
1 chromebook
2 minitower
3 macbook
4 laptop
和这些类别
1 chromeos
2 portable
3 windows 7
4 macos
然后,您将在product_category表中具有这些条目
1 1 chromebook categories: ... chromeos
1 2 ... portable
2 3 minitower category ... windows 7
3 2 macbook categories ... portable
3 4 ... macos
4 2 laptop categories ... portable
4 3 ... windows 7
因此,如果您想查看每种产品的类别,则可以
SELECT name, description,
GROUP_CONCAT(catname) categories
FROM product
JOIN product_category USING (product_id)
JOIN category USING (category_id)
同样,如果您想要所有笔记本电脑,则可以执行此操作.
SELECT name, description
FROM product
JOIN product_category USING (product_id)
JOIN category USING (category_id)
WHERE catname = 'laptop'
如果要使用所有的macos笔记本电脑设备,则要复杂一些.
SELECT name, description
FROM product p
JOIN product_category pca ON p.product_id = pca.product_id
JOIN category ca ON pca.product_id = ca.product_id
AND ca.catname = 'macos'
JOIN product_category pcb ON p.product_id = pcb.product_id
JOIN category ca ON pcb.product_id = cb.product_id
AND cb.catname = 'laptop'
请注意,组合主键可防止您多次将产品分配给类别,反之亦然.
专家提示:为清楚起见,在所有表中为连接的值使用相同的列名是一个好主意.例如,product_id同时显示在product和product_category表中.
php传输的多个id集中为一条记录,如何将多个ID应用于Mysql中的一条记录?相关推荐
- python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...
Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...
- 【MOS】如何利用RMAN可传输表空间迁移数据库到不同字节序的平台(文档 ID 1983639.1)...
如何利用 RMAN 可传输表空间迁移数据库到不同字节序的平台 (文档 ID 1983639.1) 适用于: Oracle Database - Enterprise Edition - 版本 10.1 ...
- mysql中在表中insert数据时,有重复主键id时,变成update
MySQL 自4.1版以后开始支持INSERT - ON DUPLICATE KEY UPDATE语法 例如: id name sex age 1 kathy male 23 2 Javer f ...
- mybatis添加记录时返回主键id
参考:mybatis添加记录时返回主键id 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作. 在使用mybatis作为ORM组件时,可以很方便地达到这 ...
- Mysql 中获取刚插入的自增长id的值
1 insert into user (username,password) VALUES ('zyl','123'); 2 //获取刚插入的自增长id的值 3 select last_insert_ ...
- SQL获取刚插入的记录的自动增长列ID的值
假设表结构如下: CREATE TABLE TestTable ( id int identity, CreatedDate datetime ) SQL2005获得新增行的自动增长列的语句如下: i ...
- 全局唯一递增的id_分布式ID生成方法-趋势有序的全局唯一ID
一.需求缘起 几乎所有的业务系统,都有生成一个记录标识的需求,例如: (1)消息标识:message-id (2)订单标识:order-id (3)帖子标识:tiezi-id 这个记录标识往往就是数据 ...
- 关于MySql中自增长id设置初始值
在MySQL数据库,设置了id为自增长类型,但由于程序还处于开发阶段,很容易的会产生错误数据,然后就直接删除了,可是id的自增长值没有跟着减少,这里提示: 如果表中数据没有用,直接删除了数据,自动增长 ...
- mysql id会用完吗_数据库自增ID用完了会怎样?
起步 对DBA来说这应该是送分题吧.而我是突如其来的想法想测试下的.正常来说程序员是不会关心自增ID用完的情况的. 以 Mysql 为例,它支持的最大的整型是 unsigned bigint,上限是 ...
最新文章
- SDWebImage使用,图片加载和缓存
- 基于MAP-MRF的视差估计
- ionic3 安装遇到的问题
- 2014-06-27nbsp;20:47
- wsl 或者window terminal 下出现Java 14 switch expressions unrecognized解决方法:升级java jdk到14 or later
- 【时间序列】使用 Auto-TS 自动化时间序列预测
- python的特殊方法介绍
- Error configuring application listener of class org.springframework.web.context.ContextLoaderListene
- Linux内存管理 -- /proc/{pid}/smaps讲解
- 1. MFC编程——变量命名规则
- 中年妇女,偶很想念你
- Kerberos学习(四)
- 重温Python基础——列表
- 华为鸿蒙系统能玩安卓游戏吗_华为鸿蒙系统出来后安卓游戏账号还能用吗 鸿蒙和安卓游戏数据会互通吗...
- MYSQL DATA_FORMAT函数
- 制作一个简单的Android版的音乐播放器
- 电影网网站优化-系统优化篇
- Google Guice的使用方式
- 20230102今天的世界发生了什么
- nginx 正反向代理
热门文章
- 云+X案例展 | 金融类:青云QingCloud助力泰康人寿云计算演进之路
- 说真的,程序员相亲,真的太太太太太太难了 | IT巨能唠
- 百度积极回应阿波龙项目不实报道;半数开发者认为学习新语言很困难;腾讯在长沙建立首个智慧产业总部……...
- r包调用legend函数_R语言实现基于朴素贝叶斯构造分类模型数据可视化
- php组成,PHP的控制结构,PHP脚本是由一系列语句组成的。
- SpringBoot集成Myabtis
- 用PL/SQL Develpoer工具完成导入和导出
- .流程引擎对接的三种方式_02
- Centos7 安装maven
- 安装redis,执行make test时遇到You need tcl 8.5 or newer in order to run the Redis test