Несколько SQL-запросов с INNER JOIN разные параметры? - PullRequest
2 голосов
/ 19 июня 2019

Я не уверен, какова терминология для этого, но у меня есть запрос mysql

SELECT name, invTypes.typeName, character_skills.trained_skill_level FROM character_skills INNER JOIN character_infos ON character_infos.character_id = character_skills.character_id INNER JOIN invTypes ON character_skills.skill_id = invTypes.typeID WHERE character_skills.active_skill_level <5 AND skill_id = 12203 AND name = 'Mokey PYD';

Однако есть две переменные, которые меняются, и мне нужно показать все это в одной таблице.

Эти две переменные

WHERE character_skills.active_skill_level <5 AND skill_id = 12203

Например,

Мне нужно посмотреть, нужно ли значение active_skill_level is < 5 для skill_id 12203 НО также проверять, является ли active_skill_level < 4 для skill_id 12204 и мне нужно, чтобы они отображались на одном столе ...

Может кто-нибудь мне немного помочь?Очень ценится.

Ответы [ 2 ]

4 голосов
/ 19 июня 2019

Использование UNION ALL

SELECT name, invTypes.typeName, character_skills.trained_skill_level 
FROM character_skills INNER JOIN character_infos ON character_infos.character_id = character_skills.character_id 
INNER JOIN invTypes ON character_skills.skill_id = invTypes.typeID 
WHERE character_skills.active_skill_level <5 AND skill_id = 12203 AND name = 'Mokey PYD'
union all
SELECT name, invTypes.typeName, character_skills.trained_skill_level 
FROM character_skills INNER JOIN character_infos ON character_infos.character_id = character_skills.character_id 
INNER JOIN invTypes ON character_skills.skill_id = invTypes.typeID 
WHERE character_skills.active_skill_level <4 AND skill_id = 12204 AND name = 'Mokey PYD'
3 голосов
/ 19 июня 2019

Альтернативой объединению всех является предложение ИЛИ

SELECT name, invTypes.typeName
  , character_skills.trained_skill_level 
FROM character_skills 
INNER JOIN character_infos ON character_infos.character_id = character_skills.character_id 
INNER JOIN invTypes ON character_skills.skill_id = invTypes.typeID 
WHERE ( character_skills.active_skill_level <5 
AND skill_id = 12203  )  
OR  ( character_skills.active_skill_level <4 
AND skill_id = 12204  ) 
AND name = 'Mokey PYD';
...