Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
здравствуйте.
есть sql запрос,
SELECT vuz.id, vuz.vuz AS vuz, tmp.*
FROM vuz, (select spec.id as idsp, vuz.id_city, spec.spec as spec, vuz.golovnoyvuz as g_vuz,
spec.budzhmest, spec.napr, napr.id, spec.stoimost, AVG(spec.stoimost)
from vuz, spec where vuz.id = spec.id_vuz and spec.stoimost>0 group by vuz.golovnoyvuz ) tmp
WHERE vuz.id = tmp.g_vuz and vuz.golovnoyvuz = 0
нужно преобразовать его в формат запросов лары ->where()->leftJoin итд. помогите плз
вот попытка, но запрос не видит tmp.g_vuz в чем причина может быть?
DB::table(DB::raw("vuz,(select spec.id as idsp, vuz.id_city, spec.spec as spec, vuz.golovnoyvuz as g_vuz, spec.budzhmest,
spec.napr, napr.id, spec.stoimost, AVG(spec.stoimost)
from vuz, spec where vuz.id = spec.id_vuz and spec.stoimost>0 group by vuz.golovnoyvuz ) as
tmp"))->select('vuz.id', 'vuz.vuz AS vuz', 'tmp.*')
->where('vuz.id' ,'=', 'tmp.g_vuz')
->where('vuz.golovnoyvuz','=','0' )->orderBy('avg','desc')->get();
Изменено vuzopedia (20.01.2017 14:57:43)
Не в сети
lara 5.3. суть в чем: есть 2 таблицы. vuz, spec. в vuz вузы и факультеты. специальности из таблицы spec относятся к факультетам.
в таблице vuz есть поле golovnoyvuz. в этом поле хранятся id головных вузов. допустим МГУ - id 1 . факультеты мгу id 2, id 3, id 4. у факультетов в поле golovnoyvuz - 1.
Не в сети
select v1.*, avg(spec.stoimost)
from vuz v1
inner join vuz v1 on v1.id=v2.golovnoyvuz
inner join spec on v2.id=spec.id_vuz
where
v1.golovnoyvuz = 0 and
spec.stoimost > 0
group by v1.id
видимо что-то в этом роде
такое перевести в построитель лары куда проще чем подзапросы. тем более что оптимизатор mysql и так превратит этот подзапрос в точно такой же джойн
Не в сети
constb, сколько возьмете денег, чтобы решить задачу?
Изменено vuzopedia (20.01.2017 15:25:02)
Не в сети
либо кто возьмется.
Не в сети
from vuz v1
inner join vuz v1
это как выразить?
\DB::table('wealqa_vuzy_vuzies', 'v1')
->join('wealqa_vuzy_vuzies', 'v1', 'v1.id', 'v2.golovnoyvuz')
->join('wealqa_vuzy_specs', 'v2.id', 'wealqa_vuzy_specs.id_vuz')
->select('v1.*')
->where('v1.golovnoyvuz', 0)
->where('v1.id_city', 59)
->where('wealqa_vuzy_specs', '>', 0)
->groupBy('v1.id')
->get();
Изменено vuzopedia (20.01.2017 19:02:49)
Не в сети
что-то близкое к этому. надо сначала запрос написать и протестить его в консоли БД (пхпмайдмин или что-то ещё) а потом уже на ларавеле его повторять
и ещё – для отладки на построителе можно вместо get вызвать toSql и посмотреть что он сгенерировал и поправить если что не так
Не в сети
Страницы 1