0

私は3つのテーブルを持っています:

SN | Table Name  | Primary Key   | Foreign Key | Attribute 
-----------------------------------------------------------------
1  | salesArea   | salesAreaID   |             | areaDescription
2  | store       | storeID       | salesAreaID | 
3  | salesPerson | salesPersonID | storeID     | salesPersonName 

特定salesPersonNameの. _salesAreasalesPerson

たとえば、salesPersonデイビッドという名前storeIDは、NE にある 23 で働いていsalesAreaます。salesPerson34 で働いている Bob という名前の別の人がいてstoreID、これも NE にありsalesAreaます。

これまでの私のクエリは...

SELECT salesPersonName,
salesPersonID,
    st.salesAreaID,
    areaDescription,
    sp.storeId
  FROM salesperson as sp, salesArea as sa, store as st

storeID「David」を取得して、それが何であるかを取得する方法について混乱していますsalesArea。それからそれで、それですべてをsalesArea取得します。salesPersonssalesArea

Salesperson テーブルは のみを提供しますが、 のstoreID場合storeは を提供しsalesAreaますstoreID

正しい方向を指すとよいでしょう。節を結合しますか? とどこか空想group by

4

1 に答える 1

0

私は仮定しています:

  • 店舗があるエリア
  • 店舗には販売員がいます
  • 店員には名前がある

したがって、まず、渡された営業担当者のエリア ID を見つけます。

SELECT sp.SalesPersonID, st.SalesAreaID
FROM salesperson as sp
INNER JOIN store as st on sp.StoreID = st.StoreID
WHERE sp.SalesPersonName = 'David'

ここで、このクエリの結果を使用して、質問の 2 番目の部分である「特定の販売エリアにいる他の人を取得する」を実行できます。たとえば、上記のクエリが SalesAreaID = 23 および SalesPersonID = 10 を返した場合、2 番目のクエリは次のようになります。

SELECT sp.SalesPersonID, sp.SalesPersonName, st.StoreID
FROM stores st
INNER JOIN salespersons sp on st.StoreID = sp.StoreID
WHERE st.SalesAreaID = 23 and sp.SalesPersonID <> 10

ただし、2 つのクエリを組み合わせて、同じことを行う 1 つのクエリを作成できます。

SELECT sp2.SalesPersonID, sp2.SalesPersonName, st2.StoreID
FROM salesperson as sp
-- Join to stores to get the areaID of the salesperson passed (multiplicity 1)
INNER JOIN store as st on sp.StoreID = st.StoreID
-- self join to store to get all stores in that area (multiplicity 1 x Stores[area])
INNER JOIN store as st2 on st.SalesAreaID = st2.SalesAreaID
-- get all salespersons assigned to all stores in the area (multiplicity 1 x salespersons[area])
INNER JOIN salesperson as sp2 
    on st2.StoreID = sp2.StoreID 
    -- only return "other" salespersons
    and sp2.SalesPersonID <> sp.SalesPersonID
WHERE sp.SalesPersonName = 'David'

ほら、合格した営業担当者と同じエリアにいる他のすべての営業担当者を与えるクエリがあります。

于 2012-11-25T01:26:50.400 に答える