0

車両のコンポーネントを含むデータベースを構築しています。次の 3 つのテーブルがあります。

  • 車両テーブル (すべての車両が一意の ID 番号を持つ車両のリスト)
  • タイヤ表 (タイヤのシリアル番号 (SN) と部品番号 (PN) と、タイヤが取り付けられている車両 (ID) を一覧表示)
  • フィルター表 (フィルターのシリアル番号 (SN) と部品番号 (PN) と、フィルターが取り付けられている車両 (ID) を一覧表示)

特定の車両に取り付けられているすべてのフィルターとタイヤのシリアル番号と部品番号を取得する Access SQL クエリを作成したいと考えています (車両 ID が 5 のホンダ シビックを検索していると仮定します)。次のコードを作成しましたが、すべての結果のデカルト積を返します。各車両には 2 つのフィルターと 2 つのタイヤが取り付けられているため、結果を組み合わせて複製すると、次の結果が返されます。

  • タイヤ 1 (PN および SN) | フィルター 1 (PN および SN)
  • タイヤ 1 (PN および SN) | フィルター 2 (PN および SN)
  • タイヤ 2 (PN および SN) | フィルター 1 (PN および SN)
  • タイヤ 2 (PN および SN) | フィルター 2 (PN および SN)

返すクエリを作成できる方法はありますか:

  • タイヤ 1 (PN および SN)
  • タイヤ 2 (PN および SN)
  • フィルター 1 (PN および SN)
  • フィルター 2 (PN および SN)

私のコードは以下の通りです:

SELECT DISTINCT Tires.SN, Tires.PN, Tires.ID, Filters.ID, Filters.PN, Filters.SN,
Vehicle.ID 
FROM (Vehicle 
INNER JOIN Filters ON Vehicle.[ID] = Filters.[ID]) 
INNER JOIN Tires ON Vehicle.[ID] = Tires.[ID] 
WHERE Vehicle.[ID] = 5;
4

1 に答える 1

0

Vehicle.ID の単一の値に対して本当に必要な場合は、次のUNIONようなクエリを使用できます。

SELECT 'Tire',Tires.SN, Tires.PN 
FROM Tires
WHERE Vehicle.[ID]=5
UNION 
SELECT 'Filter',Filters.PN, Filters.SN
FROM Filters
WHERE Vehicle.[ID]=5
ORDER BY 1;
于 2013-03-12T00:25:40.067 に答える