|
 1.8 Кб |
|
| есть две таблицы personal_cafe и personal_cafe_response. В первой перечислен персонал, во второй отзывы и оценки по каждому члену персонала, выставленные посетителями сайта. Не могу додуматься как составить запрос чтобы выводя на странице все данные о персонале, еще и вывести количество отзывов к каждому человеку и среднею оценку из отзывов. Дамп прилагаю. | |
|
|
|
|
|
|
|
для: Bivan
(26.09.2009 в 23:53)
| | Для подсчета среднего уровня тип поля рейтинга выбран крайне неудачно. Лучше бы FLOAT (или INT на худой конец.)
А в остальном - обычный группирующий запрос к LEFT JOIN этих таблиц. с выборкой данных персонала, COUNT() и AVG()
Что не получается-то? | |
|
|
|
|
|
|
|
для: Trianon
(27.09.2009 в 00:08)
| |
SELECT
pc.id,
pc.fio,
pc.foto,
pc.description,
AVG(pcr.rating) AS "total_rating"
FROM
' . TABLE_PERSONAL_CAFE . ' pc
LEFT JOIN
' . TABLE_PERSONAL_CAFE_RESPONSE . ' pcr
ON
pc.id = pcr.id_personal
WHERE
pc.active = "1"
ORDER BY fio DESC
|
Застрял на этом, пока без COUNT, просто хотя бы персонал и рейтинг вывести, а сейчас выводит пустоту. | |
|
|
|
|
|
|
|
для: Bivan
(27.09.2009 в 00:35)
| | группировка-то где ?
Если грубо, то как-то так
SELECT
pc.id,
pc.fio,
pc.foto,
pc.description,
AVG(pcr.rating) AS `total_rating`
FROM
TABLE_PERSONAL_CAFE pc
LEFT JOINTABLE_PERSONAL_CAFE_RESPONSE pcr ON pc.id = pcr.id_personal
WHERE pc.active = 1
GROUP BY pc.id
ORDER BY `total_rating` DESC
|
по большому счету лучше бы оставшиеся поля кроме id подчиненным запросом вытянуть, ну да MySQL и так съест, а любой другой сервер, конечно, заставит.
смысла выводить по фамилии в порядке против алфавита я тоже не понял.
А ошибки у Вас наверняка из-за произвольных кавычек, раскиданных без всякого смысла. | |
|
|
|