2012-05-08 13 views
0

アイコンの2種類を取得するためにここに例のクエリ..どのように2つのステートメントを組み合わせて1つのクエリにするのですか?

$fetchIcon = array(); 
$queryIcon = $db->query("SELECT * FROM icon_code WHERE icon_type = 'icon'"); 
while ($fIcon = $db->fetch_assoc($queryIcon)) { 
    $fetchIcon[] = $fIcon; 
} 

$fetchOther = array(); 
$queryOther = $db->query("SELECT * FROM icon_code WHERE icon_type = 'other'"); 
while ($fOther = $db->fetch_assoc($queryOther)) { 
    $fetchOther[] = $fOther; 
} 

その後、私は同じページに出力に含まを表示するforeachを使用しています。

foreach ($fetchIcon as $Icon) { 
    echo $Icon['IconName']; // select option for Icon 
} 

foreach ($fetchOther as $Other) { 
    echo $Other['IconName']; // select option for other icon 
} 

質問: はどのように私は1つのクエリになります2文を兼ね備えていますか?

答えて

3
SELECT * 
FROM icon_code 
WHERE icon_type IN ('icon', 'other') 

、その後

$fetchIcon = array(); 
$fetchOther = array(); 

while($row = mysql_fetch_assoc($result)) { 
    switch($row['icon_type']) { 
     case 'icon': 
      $fetchIcon[] = $row; 
      break; 
     case 'other': 
     default: 
      $fetchOther[] = $row; 
    } 
} 
5
SELECT * FROM icon_code 
WHERE icon_type = 'icon' 
or icon_type = 'other' 
ORDER BY icon_type 

または

SELECT * FROM icon_code 
WHERE icon_type in ('icon', 'other') 
ORDER BY icon_type 

order by種類によって順序を取得するオプションです。

+0

は 'まったく同じ出力を得るためにicon_type' BY ORDERを追加します。 – bfavaretto

+1

または、より一般的には、「UNION ALL」が行います。 –

+0

@bfavaretto:いいです。 –

2

私はIN機能を使用することをお勧めします:

$queryOther = $db->query("SELECT * FROM icon_code WHERE icon_type IN ('other', 'icon'"); 
関連する問題