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表中.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529507.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529507.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529507.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php redis 傳遞閉包,通過緩存構建高性能 Laravel 應用

通過緩存構建高性能 Laravel 應用由 學院君 創建于3年前, 最后更新于 11個月前版本號 #220678 views9 likes1 collects配置Laravel 為不同的緩存系統提供了統一的 API。緩存配置位于 config/cache.php。在該文件中你可以指定在應用中默認使用哪個緩存驅動。Laravel 開箱支持主流…

imclearboder matlab,Lucas

Lucas-Kanade跟蹤算法是視覺跟蹤中一個很經典的基于點的逐幀跟蹤算法。起初這個算法是用來求解stero matching1的,后來經過Carlo Tomasi2和Jianbo Shi3等人的發展漸趨成熟。Jianbo Shi提出了一種篩選跟蹤點特征的方法,使得特征的跟蹤更可靠。Jean-Yves B…

php判斷url參數為空,PHP檢查url鏈接是否已經有參數的簡單示例

這篇文章主要為大家詳細介紹了PHP檢查url鏈接是否已經有參數的簡單示例,具有一定的參考價值,可以用來參考一下。感興趣的小伙伴,下面一起跟隨512筆記的小編小韻來看看吧!比如分頁,因為有些鏈接已經有參數了&#xff0c…

java 讀取 郵件 附件,JavaMail 中對附件下載的處理

在項目中使用 JavaMail 作為郵件核心庫,但是一直遇到一個比較頭疼的問題,當郵件中存在附件時,此封郵件加載速度很慢,最高時之后 80k/s.通過 log 打印看出,當獲取附件時,獲取一段之后等待一段時間在獲取另一端.導致 io 開銷過大,等待網絡讀取時間過長.相關日志如下:O24 FETCH 27…

matlab求勒讓德多項式零點,有沒有勒讓德多項式導數 零點程序

求N1次勒讓德多項式的m(m0,1,...)階導數零點Matlab程序子程序:function xjp(N,alpha,beta)n1:N;a(1)(alphabeta2)/2;b(1)(beta-alpha)/2;a([2:N1])(2*nalphabeta1).*(2*nalphabeta2)./(2*(n1).*(nalphabeta1));b([2:N1])(alpha*alpha-beta*beta)*(2*nalphabeta1)./(…

js_long.php,protobuf.js 與 Long.js的使用詳解

這次給大家帶來protobuf.js 與 Long.js的使用詳解,是急用protobuf.js 與 Long.js的注意事項有哪些,下面就是實戰案例,一起來看一下。protobuf.js的結構和webpack的加載之后的結構很相似。這樣的模塊化組合是個不錯的結構方式。1個是適應了不同…

微分進化算法解決函數優化問題的matlab代碼,Matlab微分進化算法及優化函數測試...

微分進化(Difference Evolution,DE)算法是一種優化算法,據稱其比GA(遺傳算法)等更為優秀。借鑒網上實現的DE算法,用Matlab實現了對若干函數優化問題的解法,代碼如下:function [] de_testclear all;close all;clc;%解&…

Oracle中獲取文件中的數據,操作oracle中的數據文件

收藏于http://dev.yesky.com/296/8090796.shtmlOracle數據庫中管理表空間和數據文件數據庫的三大組成部分:數據文件,控制文件,Redo日志。表空間分為系統表空間和非系統表空間。SYSTEM表空間是最基本的,必須的,Oracle建議你為用戶數…

oracle 存儲過程設置回滾點,(轉)oracle 存儲過程事宜使用斷點回滾 -savepoint

學習存儲過程中使用斷點回滾事務時,發現目前網絡上存在一個問題,那就是使用斷點回滾后,都忘記了一個很重要的事情,提交事務。雖然使用了斷點回滾,但是斷點回滾不像rollBack或commit一樣結束當前事務,而使用…

php tp5清空數據表并主鍵,tp5數據庫——更新數據

更新數據更新數據表中的數據Db::table(think_user)->where(id, 1)->update([name > thinkphp]);如果數據中包含主鍵,可以直接使用:Db::table(think_user)->update([name > thinkphp,id>1]);update 方法返回影響數據的條數,…

oracle幾個網絡,ORACLE網絡的幾個重點概念

數據庫名(DB_NAME)、數據庫實例名(INSTANCE_NAME)、操作系統環境變量ORACLE_SID、數據庫服務名 (SERVICE_NAME)、數據庫域名(DB_DOMAIN)以及全局數據庫名(GLOBAL_DB_NAME)是幾個使用Oracle數據庫容易混 淆的概念。1、數據庫名與實例名數據庫名(DB_NAME):是區分數據的…

oracle每季度補丁,Oracle 2020 年第四季度補丁發布

半個月前,也就是 10 月 20 日, Oracle 發布了今年最后一次補丁更新,那么很多人都想打最新的 PSU,理由是有被掃到各種漏洞,有的掃描工具著實太坑,這里就不用說了,前幾天看到蓋總發布的文章2020年…

php flash上傳進度條,PHP_PHP+FLASH實現上傳文件進度條相關文件 下載,PHP之所以很難實現上傳進度條 - phpStudy...

PHPFLASH實現上傳文件進度條相關文件 下載PHP之所以很難實現上傳進度條是因為在我們上傳文件到服務器的時候,要等到文件全部送到服務器之后,才執行相應的php文件。在這之前,文件數據保存在一個臨時文件里面,而php無法獲得這個文件…

oracle截取時間函數6,SQL 取日期部分函數

convert(varchar(10),getdate(),120)這個函數就可以得到日期部分了,我覺得還是比較方便的,我覺得SQL在日期方面,沒有ORACLE函數坐的好。。Sql Server中的日期與時間函數1. 當前系統日期、時間select getdate()2. dateadd 在向指定日期加上一…

oracle 找不到程序,Oracle 找不到監聽程序

Oracle服務器文件 app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.oraSID_LIST_LISTENER (SID_LIST (SID_DESC (SID_NAME CLRExtProc)(ORACLE_HOME D:\app\Administrator\product\11.2.0\dbhome_1)(PROGRAM extproc)(ENVS "EXTPROC_DLLSONLY:D:\…

oracle中的存儲過程教程,oracle 存儲過程

-- 查看系統定時任務SELECT * FROM DBA_JOBS-- 新建定時任務DECLAREjobno NUMBER;BEGINSYS.DBMS_JOB.SUBMIT(JOB > jobno, /*自動生成JOB_ID*/WHAT > qmcb_ls_data;, /*需要執行的存儲過程名稱或SQL語句*/NEXT_DATE > SYSDATE, /*初次執行時間-立即執行*/INTERVAL >…

Oracle segment啥意思,關于oracle數據庫段segment的小結

段(segment)是一種在數據庫中消耗物理存儲空間的任何實體(一個段可能存在于多個數據文件中,因為物理的數據文件是組成邏輯表空間的基本物理存儲單位)今天碰到一個高水位問題:一個分區表,刪除某個分區中的一些數據后,表空間并沒有回…

Linux在文件第一行添加字符,使用shell命令給文件中每一行的前面、后面、指定列添加字符...

shell給一個文件中的每一行開頭插入字符的方法:awk {print "X"$0} fileNameshell給一個文件中的每一行結尾插入字符的方法:awk {print $0"X"} fileNameshell給一個文件中的每一行的指定列插入字符的方法:awk $O$O" …

路由器 刷 linux系統版本,在Linux下用tftp刷寫路由器固件

(以Buffalo WHR-G300N V2路由器為例)以發行版Ubuntu為例(如果你在Windows下,可下載Ubuntu的ISO文件,再用wubi安裝Ubuntu,可免去重新分區的麻煩),下載Buffalo WHR-G300N V2路由器的FTP版固件文件,放到Ubuntu的/home目錄…

linux沒有etho網卡,關于怎么解決CENTOS7沒有ETH0網卡這個問題

CentOS7系統安裝完畢之后,輸入ifconfig命令發現沒有eth0,不符合我們的習慣。而且也無法遠程ssh連接。1.進入目錄/etc/sysconfig/network-scripts/2.將文件ifcfg-ens33重命名為ifcfg-eth0;(注意:修改需要切換至root用戶)3.編輯ifcfg-eth0使用命令&#xf…