1

2 つのテーブルがあり、最初のテーブルは次のようになります。

【比較】

  • ID (整数)
  • Car_Id1 (整数)
  • Car_Id2 (整数)
  • ナメクジ(ひも)
  • タイムスタンプ

2番目のもの:

【車両スペック】

  • ID (整数)
  • 年 (整数)
  • メイク(文字列)
  • モデル (文字列)

このクエリがあります

SELECT TOP 100 * 
FROM [Comparsions] 
WHERE 
ORDER BY [TimeStamp]

最新の 100 レコードが返されますが、次のようにCar_Id1andCar_Id2を 2 番目のテーブルの情報に置き換える必要があります。Car_Id1 -> [Year + Make + Model]

4

2 に答える 2

2

したがって、テーブルINNER JOINに対して 2 つのが必要です。としてエイリアスしました。VehicleSpecsCar_Id1Car_Id2car1, car2

SELECT TOP 100
  c.Id,
  c.Slug,
  c.TimeStamp,
  /* Select the relevant columns from *both* of the joined tables */
  /* And give each column an alias to differentiate it from the other */
  car1.Year AS car1Year,
  car1.Make AS car1Make,
  car1.Model AS car1Model,
  car2.Year AS car2Year,
  car2.Make AS car2Make,
  car2.Model AS car2Model
FROM 
  Comparisons c
  /* Join first against VehicleSpecs for Car_Id1 */
  INNER JOIN VehicleSpecs car1 ON c.Car_Id1 = car1.Id
  /* Then once more for Car_Id2 */
  INNER JOIN VehicleSpecs car2 ON c.Car_Id2 = car2.Id
ORDER BY c.TimeStamp

あなたはnewestが欲しいと言ったので、実際にはタイムスタンプで降順を使用するつもりだと思います:

ORDER BY c.TimeStamp DESC
于 2012-11-24T22:19:18.263 に答える
1

2 番目のテーブルに対して 2 回結合します。

select top 100
  c.Id, c.Slug, c.TimeStamp,
  s1.Year as Car1_Year, s1.Make as Car1_Make, s1.Model as Car1_Model,
  s2.Year as Car2_Year, s2.Make as Car2_Make, s2.Model as Car2_Model
from Comparsions c
inner join VehicleSpecs s1 on s1.Id = c.Car_Id1
inner join VehicleSpecs s2 on s2.Id = c.Car_Id2
order by c.TimeStamp desc

(補足: テーブル名を に修正することをお勧めしますComparisons。)

于 2012-11-24T22:21:12.500 に答える