2014-04-07 2 views
0

Этот SQL-запрос возвращает только один результат, когда он должен возвращать многие. Я использую SQL JOIN для объединения данных из двух таблиц в один запрос. Я пытаюсь выбрать те строки в таблице, которые содержат поисковое слово (почему я использую SQL LIKE), а затем вытаскивать данные (как округленное среднее) из таблицы r, столбец «avrank» соответствует столбцу «id» из таблица s. Какие-либо предложения о том, что я могу изменить, чтобы вернуться к нескольким результатам?SQL-запрос возвращает только один результат

  SELECT s.*, 
      ROUND(AVG(r.rank),0) 
      AS avrank 
      FROM stories s     
      LEFT JOIN ratings 
      AS r ON r.storyidr = s.id 
      WHERE title 
      LIKE '%$find%' 
      LIMIT 50; 

ответ

3

Вы получаете один результат только потому, что вы вычисляя средние .. Для того, чтобы получить несколько результатов при использовании функции как AVG() или COUNT() и т.д .. Вы должны использовать GROUP BY

Вы могли бы попробовать что-то вроде этого:

  SELECT s.*, 
      ROUND(AVG(r.rank),0) 
      AS avrank 
      FROM stories s     
      LEFT JOIN ratings 
      AS r ON r.storyidr = s.id 
      GROUP BY title 
      HAVING title 
      LIKE '%$find%' 
      LIMIT 50; 
+0

Вы пригвоздили его, спасибо amir – rhill45

+0

Без проблем :) @buzrw – CMPS

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