Первый запрос 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 записей.