2013-04-02 100 views
1

我有一個Footwer樣式表,屬於不同的相應鞋類。我想要做的是在不同的(單獨的)類別下列出樣式。一個列中的多個參數值 - 一個查詢

可供涼鞋

風格是: 的觸發器 幻燈片

供鞋

風格是: 競技 綁帶 包子 皮鞋

正如你可以看到下面,現在,我我只是重申我的查詢與不同的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子句指出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 /將所有ids-and-put-them-into-an-array-in-php

我希望我能正確地提出問題。我知道我可能聽起來很失落,因爲我是。

基本上,我正在試圖找到什麼xpy說: 「你可以分開他們,你可以通過他們的typeid識別他們。「 」您必須將結果放入單獨的數組中,每種類型放入一個數組中,或放入一個多維數組中,每種類型都有一個索引,當然,您必須檢查結果,然後將其放入特定數組中。

所以,我的瀏覽器視圖將如下所示:

我們可用樣式鞋: 競技 綁帶平底便鞋

我們提供的樣式BOOTS: 戰鬥 徒步旅行 騎馬

我可以堅持我最初的(第一個問題),但作爲一個編程新手,我真的很想學習。

再次感謝。 仁

回答

0

你可以嘗試:

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

,這將給你兩個shoessandals由於DISTINCT所有行,你將無法識別樣式是否是常見的款式他們兩個(如果它將永遠是一個)。

+0

感謝您的答覆,Xpy和Azaroth。我嘗試了兩個建議;然而,正如xpy指出的那樣,它只是列出了所有的類型和樣式,我仍然不能將它們與標題「可用於SANDALS的樣式是:」或「可用於SHOES的樣式是:」分開。 我很欣賞這些建議,儘管如此。 – Jen

+0

@Jen當然你可以把它們分開,你可以用'typeid'來識別它們。 – xpy

+0

任何建議如何我可以執行它?:) – Jen

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 

一個結果..

簡單循環,直到」類型更改爲閱讀所有不同的風格。 這樣你可以閱讀所有樣式和類型與一個查詢

+0

我寧願明確加入;) –

+0

我想我到了那裏。我把它們放在一個foreach循環,並得到:靴子 - 戰鬥 靴 - 徒步旅行 靴 - 騎 涼鞋 - 人字拖涼鞋 - 幻燈片 鞋 - 運動鞋 - 綁帶鞋 - 包子 鞋 - Moccasins--現在只需嘗試將它們分開並在不同的標題下顯示,如「鞋子可用的樣式爲:」 – Jen

+0

在此示例中,結果很少,但我們可能有數百或數千個結果,將它們全部取出是明智的? – xpy