@RomanGorbatko
PHP, Python, NodeJS, Swift

Как объединить два запроса?

Первый запрос Q1:
SELECT
	`s`.*,
	`projects`.`Name` as `ProjectName`,
    IFNULL(`u1`.`Id`, 0) as `UserId`,
    `u1`.`Name` as `UserName`,
    IFNULL(`u2`.`Id`, 0) as `UserId2`,
    `u2`.`Name` as `UserName2`
FROM
    `sites_cr` as `sc`
	LEFT JOIN `sites` AS `s` ON (`s`.`Id` = `sc`.`SiteId`)
    LEFT JOIN `projects` ON `projects`.`Id` = `s`.`project_id`
    LEFT JOIN `users` as `u1` ON `u1`.`Id` = `s`.`assessment_user`
    LEFT JOIN `users` as `u2` ON `u2`.`Id` = `s`.`BlockedToUser`
WHERE
	true
    and (( `s`.project_id = 8 OR `s`.project_id = 9 OR `s`.project_id = 12 OR `s`.project_id = 15 OR `s`.project_id = 16 OR `s`.project_id = 2 )  AND ( `sc`.`CheckStatus` = 6 ))
    AND (`s`.`CheckStatus` != 6)
ORDER BY
    `s`.`Id` DESC


Как видно, в этом запросе происходит выборка из таблицы sites_cr AS sc, при условиии, что `sc`.`CheckStatus` = 6, после идет выборка к таблице sites AS s где `s`.`Id` = `sc`.`SiteId` + некоторые условия в WHERE, они, собственно, не очень важны.

Второй запрос Q2:
SELECT
    `s`.*,
    `projects`.`Name` as `ProjectName`,
    IFNULL(`u1`.`Id`, 0) as `UserId`,
    `u1`.`Name` as `UserName`,
    IFNULL(`u2`.`Id`, 0) as `UserId2`,
    `u2`.`Name` as `UserName2`
FROM
    `sites` as `s`
    LEFT JOIN `projects` ON `projects`.`Id` = `s`.`project_id`
    LEFT JOIN `users` as `u1` ON `u1`.`Id` = `s`.`assessment_user`
    LEFT JOIN `users` as `u2` ON `u2`.`Id` = `s`.`BlockedToUser`
    
WHERE
    true
     and (( project_id = 8 OR project_id = 9 OR project_id = 12 OR project_id = 15 OR project_id = 16 OR project_id = 2 )  AND ( CheckStatus = 6 ))
ORDER BY
    `s`.`Id` DESC


Как видно, запросы очень похожи, практически идентичны.
За исключеним того, что Q1 сначала ищет нужные ID в sites_cr AS sc, после достает данные с sites AS s и возвращает, например, 130 записей; а в Q2 запрос к sites AS s происходит сразу и возвращает, например, 30 записей.

Вопрос. Как объединить эти запросы, что бы в итоге получить 160 записей.
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
evgeniy2194
@evgeniy2194
PHP, js developer
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы