SSMS にはクエリ デザイナーがありますが、正直なところ、それを実際に使用することはできないため、通常は避けています。
残念ながら、私の同僚はそうしています。30 分の余裕があるので、最終的に自分が問題なのか SSMS なのかを知りたいと思います。
例: テーブルの建物、テーブルの床、テーブルの部屋、およびマッピング テーブルの使用タイプ (部屋使用タイプ) があるとします。
クエリを手動で設計するときは、次のようにします。
select all buildings,
left join all floors in those buildings
left join all rooms in those floors
left join the room-usage_types mapping table.
今、クエリ デザイナーで同じことをしようとすると、どういうわけかマッピング テーブルから始まり、左が部屋に結合し、左が床に結合し、左が建物に結合します。
部屋のマッピングテーブルにエントリがない場合、すべての部屋が返されるわけではないため、これには根本的な欠陥があります (これは、すべての部屋が必然的にフロアにあり、すべてのフロアが必然的に建物にあるが、すべての部屋ではないことを前提としています) [一定期間]それ自体に関連付けられた使用タイプが必要です)...
ここで、結合の変更を開始すると、次のクエリが表示されます
SELECT
FROM usage_type mapping
RIGHT OUTER JOIN Floors
LEFT OUTER JOIN Rooms
RIGHT OUTER JOIN Floors
現在、このクエリは同等のように見えますが、これは一例であり、通常はさらに多くのテーブルを結合する必要があります。そのため、右結合と左結合の混在は特に好きではありません。最終的に理解するのが難しく (特に、結合が行われた場所でいくつかの ON ステートメントが続かない場合)、バグの検索がほぼ不可能になるからです。 (そして、私が望むものを理解するクエリ デザイナーの能力をあまり信頼していません)。
私はこれまでのところ、クエリを思い通りに「設計」する方法を見つけていません。唯一の方法は、最初のクエリを作成し、SQL テキストを取得し、結合を調整してから、SQL クエリ デザイナーでこれを再度開くことです。
言うまでもなく、これはそもそも手動で行うよりも時間がかかります。また、クエリ デザイナーによって SQL スクリプトが変更された場合、最初に手動で再フォーマットしないと読み取れなくなります...
私のバリアントは、クエリ デザイナーで達成することはまったく不可能であるように思えます...クエリ デザイナーでは、結合記号のコンテキスト メニューで、左側のテーブルが一番上に表示されることがあります。時々、右側のテーブル。
そして、上のものではなく下のものを選択しなければならないときは、右結合を行います。私は上のものを選ぶことができ、それは左の結合を行いますが、間違った順序で...これはまさに私が望んでいないことです...
だから私は尋ねたいと思っていました:クエリがどのテーブルから開始されるかを指定する「秘密の」方法はありますか?