私は AdventureWorks サンプル DB を使用しています。SQL Server 2008R2 を実行しているので、AdventureWorks のエディションだと思います (読み取り専用アクセス権があります)。従業員とマネージャーの関係を特定できるように、セールス マネージャーのリストを取得しようとしています。同じ役職で、わずかに異なるクエリで CurrentFlag が 1 (アクティブ) に設定された、名前の異なる 3 人の 2 組を取得しています。1 つの結果グループに同じ contactID と employeeID があることに気付きましたが、これが何を示しているのかはわかりません。
問題は、これら 2 つのクエリでまったく異なる結果が得られるのはなぜですか? それぞれに対して 6 つの結果が得られると思います。クエリは従業員テーブルのタイトルと一致しています。
SQL クエリ 1:
select c.FirstName, c.LastName, c.ContactID, e.EmployeeID, e.Title, c.Title, e.CurrentFlag from Person.Contact c inner join HumanResources.Employee e on c.ContactID = e.ContactID where e.Title like '%Sales Manager%'
SQL クエリ 2:
SELECT e.EmployeeID, (c.FirstName + ' ' + c.LastName) as 'First Name and Last Name', e.Title FROM HumanResources.Employee e INNER JOIN Person.Contact c ON e.EmployeeID = c.ContactID Where e.Title LIKE '%Manager%' AND e.Title LIKE '%Sales%' ORDER BY e.EmployeeID;
更新: これらは私の結果です:
SQL クエリ 1:
------- ------- ---- --- ---------------------------- ---- -- Stephen Jiang 1011 268 North American Sales Manager NULL 1 Amy Alberts 1013 284 European Sales Manager NULL 1 Syed Abbas 1012 288 Pacific Sales Manager Mr. 1
SQL クエリ 2:
--- --- ----------- ---------------------------- --- -- 268 268 Gary Drury North American Sales Manager Mr. 1 284 284 John Emory European Sales Manager Mr. 1 288 288 Julie Estes Pacific Sales Manager Ms. 1