Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка отзывов с коментами на отзывы 
V
    Опции темы
studentigor
Дата 1.12.2012, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



Всем привет.
Есть у меня таблица отзывов, в ней же хранятся и коментына отзывы.
Связь осуществляется через колонку parantId. У родителя(отзыва), parantId=0, ну а у комента parantId = id отзывы, для которого был оставлен комент.

Вобщем есть такие поля
id, articleId, userId, parentId, date, text
Формирую запрос
Код

SELECT r . * , p . * , c.text AS coment, c.userId AS user, c.dateCreate AS DATE
FROM Reviev r
LEFT JOIN  `userProfile` p ON r.userId = p.userId
RIGHT OUTER JOIN  `Reviev` c ON r.id = c. parentId
WHERE r.articleId =4


Вобщем на выходе я получаю массив типа
Код

array(
'id'=>1,
'articleId' =>4,
'userId' =>2,
...
'text' => 'asdad',
...
'user' => 5,
'coment'=>'assad',
)


ну вобщем то правильный, но это правильно если у отзыва один комент, а если их несколько...
хотелось бы получить такой результ
Код

array(
'id'=>1,
'articleId' =>4,
'userId' =>2,
...
'text' => 'asdad',
...
'comments' =>array('user' => 5,'coment'=>'assad',...),
)


Можно таой результ получить средствами мускульного запроса, или это нужно только на пыхе уже формировать.
Если можно подскажите плиз


PM MAIL   Вверх
Arantir
Дата 1.12.2012, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



Нельзя так. MySQL может вам вернуть только прямоугольную табличку - набор строк, то есть без разноразмерных массивов. Превратить результат в то, что вам нужно, можно только через PHP.

В теории можно склеить подрезультаты в что-то типа "{'user':5,'comment':'blabla'}" и высылать одним полем, но, во-первых, это будет запрос размером с небольшой php скрипт, во-вторых, это уже будет решение через *опу.
Намного проще обработать обычный результат через php.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
studentigor
Дата 1.12.2012, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



ок, пасиб
PM MAIL   Вверх
Aliance
Дата 3.12.2012, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



По-моему, хранить разные сущности (отзыв и комментарий) - как минимум неправильно  с точки зрения нормализации.
PM MAIL WWW ICQ Skype   Вверх
Arantir
Дата 3.12.2012, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



Aliance, смотря как посмотреть. Вспомни формат вывода комментов на хабре. На вид - все есть комменты, только у одних коммента-родителя нет, а других есть.

Это сообщение отредактировал(а) Arantir - 3.12.2012, 10:55


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.