У меня патологическая проблема с SQL, поэтому я обычно разбираю все проблемы с базами данных, создавая быстрые программные приложения для решения моих проблем с SQL.
(как и в этом случае)
Благодаря StackOverflow я думаю, что я могу быть посрамлен на правильность, поэтому я хотел бы узнать, как сделать этот вид устранения неполадок SQL в реальном SQL или самом T-SQL (если это возможно):
У меня есть:
база данных DB1 Таблица A (номер единицы, номер здания)
база данных DB2 Таблица B (номер единицы, номер здания)
Я хочу предложить единицы (номера единиц), существующие в таблице A из базы данных DB1, которые не существуют в таблице B из базы данных DB2 и наоборот.
Может быть более одного юнита с одинаковым номером юнита, это произойдет, потому что один и тот же номер юнита может быть дан юнитам разных зданий.
У меня нет доступа на запись ни к одной из баз данных.
Я надеюсь, что это не рассматривается как пост "дай мне кодз", я хотел бы знать, как люди с большим беглым знанием SQL, чем я, сортируют этот вид алгоритма, сообщения в учебные пособия или подсказки более чем приветствуются, нет полной код требуется, но если это помогает разобраться, пожалуйста, сделайте.
Сначала я подумал, что могу просто получить все номера юнитов из одной таблицы и исключить их из выбора из другой, например:
select concated.unit from
( SELECT ( unitNo + ',' + CONVERT(varchar(12), BuildingNo) ) as unit
FROM A) concated
having concated.unit not in
(
'201,1',
'202,1',
'203,1',
'204,1',
'205,1',
'206,1',
[...]
Обычно это работает, но количество единиц в любой таблице огромно, при попытке этого SQL-сервер завершается с:
"не хватило места в стеке"
Спасибо
Ric