私は SQL に病的な問題を抱えているので、SQL の問題を処理するための迅速なソフトウェア アプリケーションを構築することで、データベースの問題をすべて整理しています。
(この場合もそうしています)
StackOverflow のおかげで、私は正しさを恥じることができると思うので、実際の SQL または T-SQL 自体でこの種の SQL トラブルシューティングを行う方法を学びたいと思います (可能であれば):
私は持っている:
データベース DB1 テーブル A (ユニット番号、ビル番号)
データベース DB2 テーブル B (unitNo、BuildingNo)
データベース DB2 からテーブル B に存在しない、データベース DB1 からテーブル A に存在するユニット (ユニット番号) を考え出します。
同じユニット番号を持つ複数のユニットが存在する可能性があります。これは、同じユニット番号が異なる建物のユニットに与えられる可能性があるためです。
どのデータベースにも書き込みアクセス権がありません。
これが「ギミー・テ・コズ」の投稿と見なされないことを願っています。私よりも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',
[...]
これは通常は機能しますが、1 つのテーブルからのユニットの数が非常に多いため、これを試みると SQL サーバーが次のようにクラッシュします。
「スタックスペースが不足しました」
ありがとう、
リック