我在將它們與已將項目放入其「Locker」中的用戶進行匹配時,按字母順序排序我的數據結果時遇到困難。多個查詢時按字母順序排序?
我有兩個疑問;第一個在數據庫中搜索用戶放置在他們「儲物櫃」中的所有物品,第二個查詢抽取物品的細節並將它們分類到物品所屬品牌的列表中。
我覺得有一個更好的方法來做到這一點,而不是強迫頁面爲每個項目運行一次查詢,但我不確定以最有效的方式寫出mySQL的正確方法。
我認爲解決方法是將所有ID作爲數組,然後以某種方式在第二個查詢中搜索並排序所有關聯品牌。
我目前有:
//$lockerid is pulled earlier in the code based on which locker number is associated with this user
// Pull all of the items and their ids that are in this users locker
$userlockerquery= mysql_query("SELECT DISTINCT item_id FROM lockers WHERE user_id = '$profile_userid' AND locker_id ='$lockerid' ");
while($lockeritems=mysql_fetch_array($userlockerquery)){
$indi_item=$lockeritems[item_id];
$lockeritemdetails = mysql_query("SELECT DISTINCT brand FROM inventory WHERE id = '$indi_item' ");
$brands=mysql_fetch_array($lockeritemdetails);
$brandname=$brands[brand];
echo '<div>'.$brandname.'</div>';
}
雖然結果確實顯示了所有的品牌,我的問題似乎是,因爲查詢對每個項目的ID跑一次,就不能有列表結果互相交談,因此不能讓他們按字母順序排列,因爲查詢每個項目都運行一次。
也因此,DISTINCT標誌沒有任何作用,因爲它不匹配任何其他結果。
舉個例子,我的結果將返回的div的ID,而不是品牌的訂單,並重復:
耐克 彪馬 彪馬 匡威
不是
匡威 耐克 彪馬
將ORDER BY標誌添加到第二個查詢沒有幫助,所以我想我會試着在這裏問一些想法。請讓我知道是否需要其他細節!
非常感謝你寫出來;我會嘗試今天實施並回復。 – vsdesign 2014-10-07 16:29:28
你有沒有得到這個工作,或沒有爲你的需要工作? – Rasclatt 2014-10-09 20:35:36
嗨Rasclatt,我還沒有機會實施它;我不熟悉PHP的類方面,所以我打算做一些閱讀,然後研究你的代碼,看看它是如何工作的,然後再與我的其他人一起實施。 – vsdesign 2014-10-10 21:27:06