我有一个Footwer Styles表,分为不同的相应鞋类。我想要做的是在不同(单独)类别下列出样式。
SANDALS可用的样式有: 人字拖 滑动
SHOES可用的样式是: 竞技 花边 皮便鞋 软皮鞋
正如您在下面看到的那样,我现在只是用不同的TYPEID重复我的查询。
只用一个查询就能有更高效的代码吗?
正如我的问题的标题所述:我可以在一列中执行多个参数值 - 一个查询吗?
提前致谢, 仁
+--------+---------+
| typeid | type |
+--------+---------+
| 1 | Shoes |
| 2 | Boots |
| 3 | Sandals |
+--------+---------+
+---------+--------+------------+
| styleid | typeid | style |
+---------+--------+------------+
| 1 | 1 | Athletic |
| 2 | 1 | Lace-up |
| 3 | 1 | Loafers |
| 4 | 1 | Moccasins |
| 5 | 2 | Combat |
| 6 | 2 | Hiking |
| 7 | 2 | Riding |
| 8 | 3 | Flip Flops |
| 9 | 3 | Slide |
+---------+--------+------------+
Styles_in_Cat.php
echo " Styles available for SANDALS are: <br/>";
$query="SELECT DISTINCT style, style.typeid, type
FROM style, type
WHERE style.typeid=3
AND style.typeid=type.typeid";
if ($result = mysqli_query($con,$query))
{
while ($row = mysqli_fetch_assoc($result))
{
$style = $row['style'];
$typeid = $row['typeid'];
$type = $row['type'];
echo " $style <br/>" ;
}
}
echo " Styles available for SHOES are: <br/>";
$query="SELECT DISTINCT style, style.typeid, type
FROM style, type
WHERE style.typeid=1
AND style.typeid=type.typeid";
if ($result = mysqli_query($con,$query))
{
while ($row = mysqli_fetch_assoc($result))
{
$style = $row['style'];
$typeid = $row['typeid'];
$type = $row['type'];
echo " $style <br/>" ;
}
}
更新: 我想我到了那里。我把它们放在foreach循环中并得到:
靴子 - 战斗 靴子 - 徒步旅行 靴子 - 骑马 凉鞋 - 人字拖鞋 凉鞋 - 滑动 鞋子 - 运动 鞋子 - 系带 鞋子 - 乐福鞋 鞋子 - 软皮鞋
现在只需要尝试将它们分开并在不同的标题下显示,例如“可用于鞋子的样式是:”
更新2:
我一直试图将结果放在数组中过去4个小时,但到目前为止还没有成功:(。
我得到了这个结果(如xpy所示):
SELECT DISTINCT type, style.typeid, style FROM style, type
WHERE style.typeid IN ( 1,3)
AND style.typeid=type.typeid
+---------+--------+------------+
| type | typeid | style |
+---------+--------+------------+
| Shoes | 1 | Athletic |
| Shoes | 1 | Lace-up |
| Shoes | 1 | Loafers |
| Shoes | 1 | Moccasins |
| Sandals | 3 | Flip Flops |
| Sandals | 3 | Slide |
+---------+--------+------------+
但我想做的是控制哪种类型出现(即使WHERE CLAUSE状态为1,3,5(typeid) - 可能我只想显示1和3)。
我读了几个帖子,但结果跟我一样。
stackoverflow.com/questions/3936073/mysql-php-selecting-only-unique-values-from-multiple-columns-and-put-them-into-s?rq=1
stackoverflow.com/questions/5345011/fetch-all-ids-and-put-them-into-an-array-in-php
我希望我正确地提出问题。我知道我可能会失声,因为我是。
基本上我正试图找到xpy所说的: “你可以将它们分开,你可以通过它们的类型来识别它们。” “你必须将你的结果放入一个单独的数组中,每个类型一个或多个数组,每个类型都有一个索引,当然你必须检查你的结果,然后把它放在特定的数组中。” p>
所以我的浏览器视图如下:
我们在鞋子上的可用款式: 竞技 花边 便鞋
我们在靴子中的可用样式: 战斗 徒步旅行 骑
我可以坚持我原来的(第一个问题),但作为一个编程新手,我真的很想学习。
再次感谢。 仁
答案 0 :(得分:2)
您必须使用GROUP BY
类似
SELECT style.style, type FROM style, type where type.typeid=style.typeid
GROUP BY type, style
你应该有像
这样的结果集Shoes Athletic
Shoes Lace-up
Shoes Loafers
Shoes Moccasins
Boots Combat
...
简单地循环'直到类型更改以读取所有不同的样式。 这样,您可以使用一个查询读取所有样式和类型
答案 1 :(得分:0)
你可以尝试:
SELECT DISTINCT style, style.typeid, type
FROM style, type
WHERE style.typeid IN (1,3)
AND style.typeid=type.typeid
由于shoes
您将无法识别样式是否为sandals
,因此会为您提供DISTINCT
和{{1}} 但的所有行两者的共同风格(如果它永远是一个)。