2013-02-22 71 views
2

我在我的表modele中有一行performanta_cpu,該行包含不同的數字cpu的frecv。例如:800, 1200, 1500,等,我想要foreach所有frecv。但如果4個設備具有相同的CPU速度,顯示我第四次相同的frecv。foreach()SQL查詢得到唯一的結果

是否有更多鈔票得到的只是一次frecv在html <select>例如:800100012001400等?

這裏是我的代碼:

$sql = "SELECT * FROM $tbl_name ORDER BY performanta_cpu DESC"; 
    foreach ($dbh->query($sql) as $linie) 
     { 

    print '<option value="'.$linie["performanta_cpu"].'">'.$linie["performanta_cpu"].'</option>'; }?> 

,這就是我得到:

  <option value="800">800</option> 
      <option value="800">800</option> 
      <option value="2000">2000</option> 
      <option value="2000">2000</option> 
      <option value="1600">1600</option> 
      <option value="1500">1500</option> 
      <option value="1500">1500</option> 
      <option value="1500">1500</option> 
      <option value="1400">1400</option> 
      <option value="1000">1000</option> 
      <option value="1000">1000</option> 
      <option value="1000">1000</option> 
      <option value=""></option>    

正確的將是這樣的:

  <option value="1600">1600</option> 
      <option value="1500">1500</option> 
      <option value="1400">1400</option> 
      <option value="1300">1300</option> 
      <option value="1200">1200</option> 
      <option value="1100">1100</option> 
      and so... 

回答

3

你可以SELECT DISTINCT(performanta_cpu) FROM $tbl_name ORDER BY CAST(performanta_cpu AS UNSIGNED) DESC

+0

我得到錯誤的第一個結果如:800,1600,1500,1400等首先必須是1600因爲是最大。任何Ideeas? – 2013-02-22 22:59:18

+0

聽起來像你沒有使用整數字段。答案已更新。 – Rob 2013-02-22 23:02:32

+0

好編羅布!你感到不安! – 2013-02-22 23:13:17

4

更改查詢

SELECT DISTINCT(performanta_cpu) FROM $tbl_name ORDER BY performanta_cpu DESC 
+0

'DISTINCT'是一個關鍵字,而不是一個功能 – 2013-02-22 22:32:15

+0

赫拉爾多,是工作,但沒有得到很好的,首先是800,2000 ,1600,1500,1400等。爲什麼有800? – 2013-02-22 22:46:12

+0

800只有一個設備在他的數據庫中,是獨一無二的,但在未來它將被填充... – 2013-02-22 22:48:04

0

試試這個

$sql = "SELECT * FROM $tbl_name ORDER BY performanta_cpu DESC"; 
$cpu = array(); 
foreach ($dbh->query($sql) as $linie) 
    $cpu[] = $linie["performanta_cpu"]; 

$cpu = array_unique($cpu); 

foreach($cpu as $val) 
    print '<option value="'.$val.'">'.$val.'</option>'; }?> 
1

如果您將添加DISTINCT,它必須工作。

SELECT DISTINCT (performanta_cpu)FROM tbl_name $ ORDER BY performanta_cpu

+0

我得到錯誤的第一個結果,如:800,1600,1500,1400等。首先必須是1600,因爲是最大的。 Ideeas? – 2013-02-22 22:49:42

+0

請解釋DISTINCT選項的含義。 – asclepix 2013-02-22 22:59:14

+0

@Domuta Marcel 800,1600,1500被排序爲字符串數據,而不是整數,所以8是比1更大的一個字符串,因此是列表中的第一個。看到Rob的回答。 – Lighthart 2013-02-22 23:13:21