Добрый день Составил запрос на сравнение 2 таблиц и вывод данных в одну Код (Text): SELECT top 100 p.sid, p.name as PersonName, g.name as GuildName, p.lv, p.job,p.jlv FROM Character AS p with (nolock) INNER JOIN Guild as g ON g.sid = p.guild_id where p.permission ='0' and p.name not like '@%' order by p.exp desc таблицу но есть одна незадача для меня если g.sid = 0 то он не выводит те данные в таблицу, как сделать так чтоб если g.sid = 0 то он тоже выводил эти днные. Потом эти данные выводятся на сайт спасибо всем
Попробуй INNER JOIN заменить на LEFT JOIN. Но вообще, не уверен, есть ли это в MSSQL - никогда не пользовался и даже не читал про него.
Да он стал выводить но там написано значение NULL а можно ли составить условие которе бы говорило что если g.sid = 0 то пишем там например 'Без гильдии' а если g.sid > 0 то берем значение из таблицы!
Можно использовать CASE: [sql]SELECT ....., CASE WHEN g.sid = 0 THEN 'То-то' WHEN g.sid > 0 THEN 'Сё-то' ELSE 'Остальное' END AS MyField, ...... FROM .....[/sql] Я не вникал в ваш запрос, но, может, вам вместо CASE сможет помочь ISNULL(<значение или выражение>, <значение, если выражение - NULL>)
Не надо никаких case. Используй left join (или full outer join - если могут не совпадать значения как в табличке слева, так и справа), в условии where пишешь для правой таблицы для поля p.guild_id условие IS NULL( или для случая с full outer join условием будет - where ((p.guild_id is null) or (g.sid is null)) полностью).
А функция ISNULL() как же, может её лучше использовать, ему же просто нулы нужно заменить на ... что-то там.