首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一个列值中的多个参数--一个查询

一个列值中的多个参数--一个查询
EN

Stack Overflow用户
提问于 2013-04-03 00:07:30
回答 2查看 139关注 0票数 1

我有一个表脚的风格,落入不同的,相应的鞋类。我正在尝试做的是在不同的(单独的)类别下列出样式。

凉鞋的款式有: Flip Flops Slide

可供选择的款式有:运动型系带乐福鞋、Moccasins

正如您在下面看到的,现在,我只是用不同的TYPEID重申我的问题。

有没有一种代码效率更高的方法,只用一个查询就能做到这一点?

正如我的问题的标题所述:我能否在一个列值中执行多个参数--一个查询?

先谢谢你,阿珍

代码语言:javascript
运行
复制
+--------+---------+
| 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

代码语言:javascript
运行
复制
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 available for SHOES:

更新2:

在过去的4个小时里,我一直在尝试将结果放在数组中,但到目前为止还没有成功:(。

我的结果来自(根据xpy的建议):

代码语言:javascript
运行
复制
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子句声明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

我希望我问的问题是正确的。我知道我可能听起来很迷茫,因为我确实是

“您必须将结果放入单独的数组中,每个数组对应一个类型,或者放入一个多维数组,每个类型对应一个索引。当然,您必须检查结果,然后将其放入特定的数组中。”

因此,我的浏览器视图将如下所示:

我们提供的鞋子款式:运动型系带便鞋

我们提供的长统靴款式:战斗徒步骑行

我可以坚持我原来拥有的东西(第一个问题),但作为一个编程新手,我真的很想学习。

再次感谢。Jen

EN

回答 2

Stack Overflow用户

发布于 2013-04-03 00:51:26

您必须使用GROUP BY

就像这样

代码语言:javascript
运行
复制
SELECT style.style, type FROM style, type where type.typeid=style.typeid
GROUP BY type, style

您应该有一个如下所示的结果集

代码语言:javascript
运行
复制
Shoes   Athletic
Shoes   Lace-up
Shoes   Loafers
Shoes   Moccasins
Boots   Combat

。。

简单地循环‘直到类型改变来读取所有不同的样式。这样你可以用一个查询来读取所有的样式和类型

票数 2
EN

Stack Overflow用户

发布于 2013-04-03 00:25:37

您可以尝试:

代码语言:javascript
运行
复制
SELECT DISTINCT style, style.typeid, type 
FROM style, type
WHERE style.typeid IN (1,3)
AND style.typeid=type.typeid

这将为您提供shoessandals 的所有行,但由于,由于DISTINCT,您将无法识别一个样式是否为这两个样式的通用样式(如果它将成为一个样式)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15768887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档