Pour obtenir toutes les lignes de T1
lors de son adhésion à la table T2
qui manque les lignes 2 et 4, vous devez utiliser un left outer join. Pour les lignes 2 et 4, le salaire sera nul. Pour remplacer la valeur nulle par autre chose, vous pouvez utiliser coalesce. Coalesce renvoie le premier argument non nul.
Depuis le terrain salary
est déclarée comme un champ int
et que vous voulez No Salary
en sortie où il n'y a pas de salaire, vous devez cast le int
à un varchar
avant de l'utiliser comme un argument en soudent.
declare @T1 table(id int, name varchar(10))
declare @T2 table(id int, salary int)
insert into @T1 values(1, 'Sue')
insert into @T1 values(2, 'Sarah')
insert into @T1 values(3, 'Nick')
insert into @T1 values(4, 'james')
insert into @T2 values(1, 10000)
insert into @T2 values(3, 9000)
select
T1.id,
T1.name,
coalesce(cast(T2.salary as varchar(10)), 'No Salary') as salary
from @T1 as T1
left outer join @T2 as T2
on T1.id = T2.id
Résultat
id name salary
----------- ---------- ----------
1 Sue 10000
2 Sarah No Salary
3 Nick 9000
4 james No Salary
Alors vous avez créé un compte ici juste pour nous demander de faire vos devoirs? Dans le même temps, vous auriez pu google sur SQL JOINs et terminer la mission. – red
Combien gagnez-vous avec "Bo salary"? "Bo" comme dans "Bonus", non? –
Allez les gars .. Je suis débutant avec SQL donc posté une telle question .. Ne répondez pas si vous pensez que c'était trop bête .. – LearningSQL