2015-03-03 74 views
0

我有這樣的代碼:SQL命令由不起作用

function artykul_firmy_z_branzy($art_id, $limit) { 
    return select(" 
     select f.id from artykuly a, firmy f where a.display = true 
     and a.id_branzy = f.branza_id and a.id = :id and f.profil <> 0 order by f.profil desc, f.firma asc limit ${limit} 
    ", array('id' => $art_id)); 
} 

此代碼應選擇從SQL數據庫中的某些行和排序它,它的偉大工程,但結果是,它具有最大的「F .profil「總是在列表的最後,當我將限制改爲」1「時,那麼我只得到了最大的f.profil的結果,所以排序工作,但如何在第一個位置顯示?

代碼模板,這表明結果:

{% if firmy_z_branzy_logo %} 
       <div class="firmy-z-branzy"> 
        <img src="/static/screw.png" class="label-screw" /> <div class="label-title">FIRMY Z TEJ BRANŻY</div> 
        <div style="clear: both;"></div> 

        {% for i in firmy_z_branzy_logo %} 
         <div class="firma-branza"><a href="/wizytowka/{{ i.id_firmy }}"><img src="/{{ i.sciezka }}m/{{ i.plik }}"/style="margin-bottom:6px;"></a>{{ i.opis }}</div> 
        {% endfor %} 
       </div> 
      {% endif %} 
+0

我會說使用'JOIN'你的選擇而不是列出所有這些的。另外,你有沒有嘗試刪除'f.firma asc'? – 2015-03-03 11:50:59

+0

是的,我試圖刪除f.firma asc或f.profil desc,看看這是否只適用於一個訂單,但它不會改變任何東西。問題在於,它運行正常 - 它從數據庫中選取,例如,12個(限制)結果以最大的f.profil結果,但在網站上以隨機順序顯示了這12個最高結果。例如:「a(5),b(3),c(9),d(5),e(1)」 - 我的代碼必須選擇3個最高數字,並按最高排序顯示,但我得到了一些如:「a(5),c(9),d(5)」 - 沒有排序,但正確挑選。 – user3180931 2015-03-03 12:07:35

+0

這很奇怪...我不知道這是如何工作的,這裏是屏幕如何改變這個代碼對結果的影響 - http://i.imgur.com/iugQwos.jpg在這張圖片的底部,我呈現了我想要的對這個結果進行排序。 – user3180931 2015-03-04 09:32:37

回答

0

也許與此INNER JOIN嘗試:

SELECT a.*, f.* FROM artykuly a 
INNER JOIN firmy f ON a.id_branzy = f.branza_id AND a.display = true AND a.id = :id AND f.profil <> 0 
ORDER BY f.profil desc, f.firma LIMIT ${limit} 
+0

結果與之前一樣 - 正確選擇但未排序。 – user3180931 2015-03-04 12:37:05

+0

如果你把查詢放入phpMyAdmin,它仍然返回錯誤?在phpMyAdmin結果中, – 2015-03-04 17:47:59

+0

正確排序,就像我想要的那樣。 – user3180931 2015-03-05 13:40:17