У меня есть два SQL-запроса, которые я хочу объединить, я, к сожалению, не знающий пользователь MYSQL.
На данный момент это мой запрос:
SELECT animal.species, count(animal.species) as f
FROM disp, animaldesc, animal
WHERE disp.disp_id = animaldesc.disp_id
AND animaldesc.authored = 1
AND animaldesc.animal_id = animal.id
GROUP BY animal.species
union
SELECT animal.species, count(animal.species) as f_specific
FROM disp, animaldesc, animal
WHERE disp.disp_id = animaldesc.disp_id
AND animaldesc.authored = 1
AND animaldesc.animal_id = animal.id
AND disp.language = "en_gb"
GROUP BY animal.species
ORDER BY f DESC
этот запрос возвращает такие данные:
-----------------------|--------------------
species | f
-----------------------|--------------------
M_A_1789 | 5
-----------------------|--------------------
M_A_1789 | 1
-----------------------|--------------------
M_A_1731 | 5
-----------------------|--------------------
M_A_1731 | 1
Несмотря на то, что я получаю все данные, которые хочу, структура неверна. Я считаю, что это связано с использованием UNION вместо JOIN. Однако я не уверен, какой тип JOIN использовать (я предполагаю, что это правильный внешний), поскольку f_specific может возвращать меньше строк, чем f.
Я не мог найти четкого объяснения для объединения двух запросов, кроме использования метода UNION? Как можно использовать ключевое слово JOIN, чтобы мой запрос возвращал это:
-----------------------|------------|---------------
species | f | f_specific
-----------------------|------------|---------------
M_A_1789 | 5 | 1
-----------------------|------------|---------------
M_A_1731 | 5 | 1
-----------------------|------------|---------------
С наилучшими пожеланиями.