【发布时间】:2021-10-20 16:16:55
【问题描述】:
有一个存储产品信息的表。
CREATE TABLE `products` (
`idx` INT(10) NOT NULL AUTO_INCREMENT,
`reg_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`idx`)
)
还有一个特定产品的图片表。
CREATE TABLE `fileData`
(
`idx` INT(11) NOT NULL AUTO_INCREMENT,
`file_url` VARCHAR(255) NOT NULL COLLATE 'utf8_general_ci',
`p_idx` INT(11) NULL DEFAULT NULL COMMENT 'product idx',
`imgNum` TINYINT(4) NULL DEFAULT NULL COMMENT 'fileCount',
`regdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`idx`)
)
文件数据
| idx | file_url | p_idx | imgNum | regdate |
|---|---|---|---|---|
| 9474 | /pic/1634705274249.png | 2323 | 3 | 2021-10-20 13:47:54 |
| 9475 | /pic/1634705274250.png | 2323 | 4 | 2021-10-20 13:47:54 |
| 9476 | /pic/1634705274251.png | 2323 | 1 | 2021-10-20 13:47:54 |
| 9477 | /pic/1634705274284.png | 2323 | 2 | 2021-10-20 13:47:54 |
| 9478 | /pic/1634705274288.png | 2323 | 5 | 2021-10-20 13:47:54 |
| 9469 | /pic/1634611885861.jpeg | 2322 | 1 | 2021-10-19 11:51:26 |
| 9470 | /pic/1634611885862.jpeg | 2322 | 2 | 2021-10-19 11:51:26 |
| 9471 | /pic/1634611885862.jpeg | 2322 | 3 | 2021-10-19 11:51:26 |
| 9472 | /pic/1634611885863.jpeg | 2322 | 4 | 2021-10-19 11:51:26 |
| 9473 | /pic/1634611885864.jpeg | 2322 | 5 | 2021-10-19 11:51:26 |
| 9464 | /pic/1634549314931.jpeg | 2321 | 1 | 2021-10-18 18:28:35 |
| 9465 | /pic/1634549314932.jpeg | 2321 | 2 | 2021-10-18 18:28:35 |
| 9466 | /pic/1634549314932.jpeg | 2321 | 3 | 2021-10-18 18:28:35 |
| 9467 | /pic/1634549314933.jpeg | 2321 | 4 | 2021-10-18 18:28:35 |
| 9468 | /pic/1634549314933.jpeg | 2321 | 5 | 2021-10-18 18:28:35 |
| 9425 | /pic/1634544307500.png | 2314 | 4 | 2021-10-18 17:05:07 |
| 9426 | /pic/1634544307501.png | 2314 | 2 | 2021-10-18 17:05:07 |
| 9427 | /pic/1634544307517.png | 2314 | 3 | 2021-10-18 17:05:07 |
| 9428 | /pic/1634544307518.png | 2314 | 1 | 2021-10-18 17:05:07 |
| 9429 | /pic/1634544307522.png | 2314 | 5 | 2021-10-18 17:05:07 |
| 9424 | /pic/1634108899663.png | 2310 | 7 | 2021-10-13 16:08:20 |
注册产品后,管理员可以更改产品图片的顺序。
当顺序发生变化时,数据库中的数据也会按照每个顺序进行重构。
imgNum 为 1 的项目被用作缩略图。
*并且必须显示在每个产品中注册的图像数量。
我想加入这两个表并获得必要的结果。或者除了join有什么好的解决办法吗?
SELECT f.imgNum, count(f.idx) AS img_cnt, p.reg_date
FROM fileData AS f
JOIN products AS p ON p.idx = f.p_idx
GROUP BY p.idx
ORDER BY p.reg_date DESC
结果:
| p_idx | imgNum | file_url | img_cnt | reg_date |
|---|---|---|---|---|
| 2323 | 3 | /pic/1634705274249.png | 5 | 2021-10-20 13:47:54 |
| 2322 | 1 | /pic/1634611885861.jpeg | 5 | 2021-10-19 11:51:26 |
| 2321 | 1 | /pic/1634549314931.jpeg | 5 | 2021-10-18 18:28:35 |
| 2314 | 4 | /pic/1634544307500.png | 5 | 2021-10-18 17:05:08 |
| 2313 | 4 | /pic/1632375026407.gif | 5 | 2021-09-23 14:30:27 |
| 2311 | 1 | /pic/1630545720418.jpeg | 5 | 2021-09-02 10:22:01 |
| 2312 | 1 | /pic/1631586395031.png | 1 | 2021-09-02 10:22:01 |
| 2310 | 1 | /pic/1630465597465.gif | 7 | 2021-09-01 12:06:38 |
预期结果:
| p_idx | imgNum | file_url | img_cnt | reg_date |
|---|---|---|---|---|
| 2323 | 1 | /pic/1634705274245.png | 5 | 2021-10-20 13:47:54 |
| 2322 | 1 | /pic/1634611885861.jpeg | 5 | 2021-10-19 11:51:26 |
| 2321 | 1 | /pic/1634549314931.jpeg | 5 | 2021-10-18 18:28:35 |
| 2314 | 1 | /pic/1634544307400.png | 5 | 2021-10-18 17:05:08 |
| 2313 | 1 | /pic/1632375026400.gif | 5 | 2021-09-23 14:30:27 |
| 2311 | 1 | /pic/1630545720418.jpeg | 5 | 2021-09-02 10:22:01 |
| 2312 | 1 | /pic/1631586395031.png | 1 | 2021-09-02 10:22:01 |
| 2310 | 1 | /pic/1630465597465.gif | 7 | 2021-09-01 12:06:38 |
【问题讨论】: