1

我有一张属于不同的对应鞋类类别的鞋类样式表。我要做的是列出不同(单独)类别下的样式。

可用于凉鞋的款式有: 人字拖幻灯片

可用于鞋子的款式有: 运动系带乐福鞋 莫卡辛

正如您在下面看到的,现在,我只是用不同的 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 循环中并得到:

靴子 - 战斗靴 - 远足靴 - 骑行凉鞋 - 人字拖凉鞋 - 拖鞋 - 运动鞋 - 系带鞋 - 乐福鞋 - 莫卡辛

现在只需要尝试将它们分开并显示在不同的标题下,例如“可用于 SHOES 的样式是:”

更新 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 所说的:“你可以将它们分开,你可以通过它们的 typeid 来识别它们。” “您必须将结果放入单独的数组中,每种类型都有一个,或者放入一个多维数组中,每种类型都有一个索引,当然您必须检查结果,然后将其放入特定的数组中。”

所以我的浏览器视图看起来像:

我们提供的鞋子款式:运动系带乐福鞋

我们提供的靴子款式:战斗远足骑行

我可以坚持我最初的(第一个问题),但作为一个编程新手,我真的很想学习。

再次感谢。仁

4

2 回答 2

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

..

只需循环'直到类型更改以读取所有不同的样式。这样,您可以通过一个查询读取所有样式和类型

于 2013-04-02T16:51:26.257 回答
0

你可以试试:

SELECT DISTINCT style, style.typeid, type 
FROM style, type
WHERE style.typeid IN (1,3)
AND style.typeid=type.typeid

这将为您提供两者的所有行shoessandals 但是由于DISTINCT您将无法确定一种样式是否是它们两者的共同样式(如果它曾经是一种)。

于 2013-04-02T16:25:36.733 回答