GROUP_CONCAT() в моем построенном запросе Laravel дает неверные значенияPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 GROUP_CONCAT() в моем построенном запросе Laravel дает неверные значения

Сообщение Anonymous »

У меня есть 3 таблицы: Пользователи, Свойства, Единицы

Таблица пользователей:
user_id user_name

Таблица свойств
pty_id pty_name user pty_status

Таблица единиц измерения
unit_id unit_name pty_id unit_status

Я хочу показать сведения о пользователе, количество объектов недвижимости и квартир, а также их сведения.
Вот мой запрос:
DB::statement('SET SESSION group_concat_max_len = 10485760');

$ar = DB::table('users as u')
->leftjoin('properties as p', function($join) {
$join->on('p.user_id', '=', 'u.user_id')->where('p.pty_status', '!=' ,0 );
})
->leftJoin(
DB::raw("
(select COALESCE(count(unit_id),0) AS cntunits, pty_id as temp_pty
from property_units as pu3
left join properties as p2 on pu3.unit_pty_id = p2.pty_id
where pu3.unit_status!=0
group by p2.pty_id
) as temp
"),
'p.pty_id',
'=',
'temp.temp_pty'
)
->select(
DB::raw("group_concat(DISTINCT CONCAT(ej_p.pty_id,'|',ej_p.pty_name,'|',cntunits)) as pty_details"),
DB::raw("group_concat(DISTINCT CONCAT(ej_p.pty_id,'|',ej_p.pty_name)) as pty_details_copy")
)
->paginate(10);

Когда я GROUP_CONCAT() для unit_count, объединяются только те свойства и единицы измерения, где существует единица измерения.
Например, приведенный выше запрос возвращает следующий результат:
pty_details pty_details_copy
7|I2|2 7|I2, 22|tR ,51|SG APARTMENT,54_||_GA APARTMENTS,

Почему свойства с единицами измерения (где количество единиц = 0) не являются обязательными? Где я ошибся?
РЕДАКТИРОВАТЬ
Вот необработанный запрос:
select group_concat(DISTINCT CONCAT(p.pty_id,'|',p.pty_name,'|',cntunits)) as pty_details,
group_concat(DISTINCT CONCAT(p.pty_id,'|',p.pty_name)) as pty_details_copy
from users as u
left join properties as p on p.user_id = u.user_id and p.pty_status !=0
left join
(select COALESCE(count(unit_id),0) AS cntunits, pty_id as temp_pty
from property_units as pu3
left join properties as p2 on pu3.unit_pty_id = p2.pty_id
where pu3.unit_status!=0
group by p2.pty_id) as temp on p.pty_id = temp.temp_pty


Подробнее здесь: https://stackoverflow.com/questions/487 ... ect-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»