Как объединить в таблицу несколько подвыборов во внутреннем соединении, используя laravel 5.7 - PullRequest
0 голосов
/ 25 января 2019

У меня есть запрос выбора, который очень хорошо работает непосредственно в MySql, однако я хотел бы знать, нужно ли мне реплицировать в Laravel 5.7, в классе Controller, чтобы отправить его в мое представление и создатьтаблицу с данными, следуйте запросу:

SELECT
    B.ID,
    A.nome,
    A.vulgo,
    A.rg,
    A.sexo,
    I.indiciado_por,
    B.area_atuacao,
    C.carta,
    N.naipe,
    B.data_entrada,
    S.situacao,
    B.data_saida,
    B.observacoes
FROM
    baralho B
INNER JOIN baralho_naipe N ON
    B.id_naipe = N.naipe_id
INNER JOIN baralho_carta C ON
    B.id_carta = C.carta_id
INNER JOIN baralho_situacao S ON
    B.id_situacao = S.situacao_id
INNER JOIN(
    SELECT
        id_baralho,
        GROUP_CONCAT(indiciado.indicio SEPARATOR '/') AS indiciado_por
    FROM
        baralho_has_baralho_indicio
    INNER JOIN baralho B ON
        baralho_has_baralho_indicio.id_baralho = B.id
    INNER JOIN baralho_indicios indiciado ON
        baralho_has_baralho_indicio.id_baralho_indicio = indiciado.indicio_id
    GROUP BY
        B.id
    HAVING
        B.id = B.id
) AS I
ON
    B.id = I.id_baralho
INNER JOIN(
    SELECT
        id_baralho,
        ALVO.nome,
        ALVO.vulgo,
        ALVO.rg,
        ALVO.sexo
    FROM
        baralho_has_baralho_alvo
    INNER JOIN baralho B ON
        baralho_has_baralho_alvo.id_baralho = B.id
    INNER JOIN baralho_alvos ALVO ON
        baralho_has_baralho_alvo.id_baralho_alvo = ALVO.id_alvo
    GROUP BY
        B.id
    HAVING
        B.id = B.id
) AS A
ON
    B.id = A.id_baralho
ORDER BY
    B.id ASC  

Как я могу заставить этот запрос работать на Laravel?Пожалуйста, помогите мне, я новичок в Laravel и благодарю вас за любую помощь

1 Ответ

0 голосов
/ 25 января 2019

Это будет работать, я думаю

DB::table('baralho AS B')
->join('baralho_naipe AS N', 'B.id_naipe', '=', 'N.naipe_id')
->join('baralho_carta AS C', 'B.id_carta', '=', 'C.carta_id')
->join('baralho_situacao AS S', 'B.id_situacao', '=', 'S.situacao_id')
->join(DB::raw("(SELECT
        id_baralho,
        GROUP_CONCAT(indiciado.indicio SEPARATOR '/') AS indiciado_por
    FROM
        baralho_has_baralho_indicio
    INNER JOIN baralho B ON
        baralho_has_baralho_indicio.id_baralho = B.id
    INNER JOIN baralho_indicios indiciado ON
        baralho_has_baralho_indicio.id_baralho_indicio = indiciado.indicio_id
    GROUP BY
        B.id
    HAVING
        B.id = B.id) AS I"), 'B.id', '=', 'I.id_baralho')
->join(DB::raw("(SELECT
        id_baralho,
        ALVO.nome,
        ALVO.vulgo,
        ALVO.rg,
        ALVO.sexo
    FROM
        baralho_has_baralho_alvo
    INNER JOIN baralho B ON
        baralho_has_baralho_alvo.id_baralho = B.id
    INNER JOIN baralho_alvos ALVO ON
        baralho_has_baralho_alvo.id_baralho_alvo = ALVO.id_alvo
    GROUP BY
        B.id
    HAVING
        B.id = B.id) AS A"), 'B.id', '=', 'A.id_baralho')
->orderBy('B.id',  'ASC')
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...