使用PHP调用SQL外键数据
发布时间:2020-12-13 21:46:14 所属栏目:PHP教程 来源:网络整理
导读:我需要更好地掌握操作和利用我需要的SQL表的过程,这样我就可以继续弄清楚我应该如何制作它们并将它们组织起来. 如果我有一个衬衫表和另一个大小表,我在衬衫表上使用外键链接到尺寸表以表示该列的多个选项.我只需要在PHP编码中调用衬衫表吗?如果是这样,我如
我需要更好地掌握操作和利用我需要的SQL表的过程,这样我就可以继续弄清楚我应该如何制作它们并将它们组织起来.
如果我有一个衬衫表和另一个大小表,我在衬衫表上使用外键链接到尺寸表以表示该列的多个选项.我只需要在PHP编码中调用衬衫表吗?如果是这样,我如何告诉PHP收集大小表上每行可用的任何选项? 如果在表中它有 vneck尺寸, 铲颈尺寸 我把它设置在vnecks只有s,m,l,1x的位置,而scoop脖子有xs,s,1x,2x,3x.我如何编写PHP代码以识别我在该列的每一行中逻辑设置的差异? 解决方法
使用以下表结构:
CREATE TABLE `shirt` ( `id` INTEGER NOT NULL,`name` VARCHAR(32),PRIMARY KEY( `id` ) ); CREATE TABLE `size` ( `id` INTEGER NOT NULL,`name` VARCHAR(4),PRIMARY KEY( `id` ) ); CREATE TABLE `shirt_size` ( `shirtId` INTEGER NOT NULL,`sizeId` INTEGER NOT NULL,PRIMARY KEY( `shirtId`,`sizeId` ),FOREIGN KEY( `shirtId` ) REFERENCES `shirt`( `id` ),FOREIGN KEY( `sizeId` ) REFERENCES `size`( `id` ) ); 这个数据: INSERT INTO `shirt` ( `id`,`name` ) VALUES ( 1,"vneck" ),( 2,"scoop neck" ); INSERT INTO `size` ( `id`,"xs" ),"s" ),( 3,"m" ),( 4,"l" ),( 5,"1x" ),( 6,"2x" ),( 7,"3x" ); INSERT INTO `shirt_size` ( `shirtId`,`sizeId` ) VALUES ( 1,2 ),( 1,3 ),4 ),5 ),1 ),6 ),7 ); 在MySQL中你可以这样做: SELECT `shirt`.`id`,`shirt`.`name`,GROUP_CONCAT( `size`.`name` ) as `sizes` FROM `shirt` JOIN `shirt_size` ON `shirt_size`.`shirtId` = `shirt`.`id` JOIN `size` ON `size`.`id` = `shirt_size`.`sizeId` GROUP BY `shirt`.`id`; 这将导致类似于: +----+------------+-------------------+ | id | name | sizes | +----+------------+-------------------+ | 1 | vneck | s,1x | +----+------------+-------------------+ | 2 | snoop neck | xs,3x | +----+------------+-------------------+ 不确定其他RDBMS是否具有类似于MySQL的GROUP_CONCAT()的聚合函数.如果没有,那么使用如下: SELECT `shirt`.`id`,`shirt`.`name` as `shirtName`,`size`.`name` as `sizeName` FROM `shirt` JOIN `shirt_size` ON `shirt_size`.`shirtId` = `shirt`.`id` JOIN `size` ON `size`.`id` = `shirt_size`.`sizeId`; 每件衬衫都会为每种尺码提供多排. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |