2015-03-03 2 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'? –

+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

+0

Это странно ... Я не знаю, как это работает, вот экран, как изменение этого кода влияет на результаты - http://i.imgur.com/iugQwos.jpg Внизу этого изображения я представил, как я хочу для сортировки результатов. – user3180931

ответ

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

+0

Если вы поместили запрос в phpMyAdmin, он все равно ошибается? –

+0

в результатах phpMyAdmin правильно отсортированы, как я хочу. – user3180931

Смежные вопросы