使用PHP调用SQL外键数据

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了使用PHP调用SQL外键数据脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要更好地掌握操作和利用我需要的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`;

每件衬衫都会为每种尺码提供多排.

脚本宝典总结

以上是脚本宝典为你收集整理的使用PHP调用SQL外键数据全部内容,希望文章能够帮你解决使用PHP调用SQL外键数据所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: