您好我正在为网上商店制作T恤网站。每个产品(来自所有1400个)都有自己的ID(idedro),但每个ID都有不同的颜色,有时一个,有时二十个。 我需要使用下面的所有颜色显示自己图片中的每个产品,但我认为循环内部的循环占用了太多的CPU时间。是否有任何方法可以使用一个循环或enter image description here使用JOIN或准备好的语句?
$querycount = mysqli_query($link,"SELECT DISTINCT (idedro)
FROM megadb WHERE catteniskiipotnici=1 ORDER BY idedro ASC");
while ($rowcounts = mysqli_fetch_assoc($querycount)) {
$result1 = mysqli_query($link,"SELECT color
FROM megadb WHERE idedro='$rowcounts[idedro]'");
while ($row1=mysqli_fetch_array($result1)) { echo $row1[color]; }
}
答案 0 :(得分:1)
这应该使用GROUP_CONCAT()
:
SELECT idedro, group_concat(color)
FROM megadb
WHERE catteniskiipotnici=1
GROUP BY idedro
ORDER BY idedro ASC
MySQL 5.6架构设置:
CREATE TABLE megadb
(`idedro` int, `color` varchar(5), `catteniskiipotnici` int)
;
INSERT INTO megadb
(`idedro`, `color`, `catteniskiipotnici`)
VALUES
(1, 'blue', 1),
(2, 'blue', 1),
(2, 'red', 1),
(3, 'blue', 1),
(3, 'red', 1),
(3, 'white', 1),
(4, 'blue', 0)
;
查询1 :
SELECT idedro, group_concat(color)
FROM megadb
WHERE catteniskiipotnici=1
GROUP BY idedro
ORDER BY idedro ASC
<强> Results 强>:
| idedro | group_concat(color) |
|--------|---------------------|
| 1 | blue |
| 2 | blue,red |
| 3 | blue,red,white |