2014-05-20 33 views
0

我需要一些幫助來編寫MySQL查詢。它需要查看所有記錄,然後按字母數字範圍中的第一個字母對它們進行排序(例如,編號爲&的AC,然後僅在$結果中返回前15個(以字母數字順序)通過字母數字和前15查詢MySQL

要搜索的字段是'命名」

簡單的結果顯示所有的(我覺得15限制是正確的) - 如何修改它

$results = DB::query("SELECT * FROM Mytable ORDER BY ? DESC LIMIT 15"); 

對於阿爾法範圍:

$results = DB::query("SELECT substr(theme, 1, 1) as Alphabet 
    FROM gallery ORDER BY (CASE theme 
    WHEN '1%' THEN 1 
    WHEN '2%' THEN 2 
    WHEN '3%' THEN 3 
    WHEN 'A%' THEN 4 
    WHEN 'B%' THEN 5 
    ELSE -1 
    END) LIMIT 15"); 

正在獲取:錯誤:您的SQL語法中有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到正確的語法來使用')LIMIT 15'

我在做什麼錯 - 試圖列出1的-3,然後A-B。

UPDATE2:在演唱會瓦特/上述改正後的查詢,我有一個簡單的foreach給變量賦值,然後在內容變量相呼應:

$x = 0 
foreach ($results as $row) { 
    $x++; 
    if ($x == 1) { // first in query 
    $t1 = $row['theme']; 
    $d1 = $row['developer']; 
    $th1 = $row['thumb']; 
    } 
    ... 
} 

沒有顯示時,是否有不同的東西,我必須做的分配變量?

更新3:你的意思是?仍然沒有顯示。

$x = 0 
while ($row = mysql_fetch_array($results)) { 
    $x++; 
    if ($x == 1) { // first in query 
    $t1 = $row['theme']; 
    $d1 = $row['developer']; 
    $th1 = $row['thumb']; 
    } 
    ... 
} 

Echo Ex。身體:

<img src="<?php echo($th1); ?>" alt="<?php echo($t1); ?>" /> 
<span><p class="hname"><?php echo($t1); ?></p> 
<p class="hdev"><?php echo($d1); ?></p></span> 
+0

我忘了「END」添加到我原來的查詢。見更新。 –

+0

請不要把代碼中的註釋,編輯您的文章,並添加代碼在那裏。 –

+0

好,移動代碼到崗位。 – parti

回答

1

做這樣的 -

$results = DB::query("SELECT * FROM Mytable ORDER BY name DESC LIMIT 15"); 

你可能不應該列名爲 '名' 雖然。這些類型的通用詞通常由您正在使用的系統保留。

如果您需要更專業化的東西,比如限制在字母表的某個部分,您的查詢會變得更加複雜。

SELECT substr(name, 1, 1) as Alphabet 
FROM MyTable 
ORDER BY (CASE name 
    WHEN 'D%' THEN 1 
    WHEN 'E%' THEN 2 
    WHEN 'F%' THEN 3 
    ELSE -1 
    END 
) 
LIMIT 15 

從頭開始做語法,您必須測試您的情況。

+0

如果alpha範圍更改爲D-F,我該如何更改它? – parti

+1

當它開始變得專業化時,查詢要複雜得多。我在答案中添加了一個例子。 –

+0

對不起,周杰倫,我沒有在你的答案中看到額外的例子;) – parti