2011-03-25 18 views
1

私は以下のデータベースを持っています。ご覧のように、各モデルにはさまざまな年があります。たとえば、2008-2010MySQL。年の範囲を選択

Infiniti EX35 2010 3.5 V6 
Infiniti EX35 2009 3.5 V6 
Infiniti EX35 2008 3.5 V6 
Infiniti EX37 2007 3.7i V6 
Infiniti EX37 2008 3.7i V6 
Infiniti EX37 2009 3.7i V6 
Infiniti EX37 2010 3.7i V6 
Infiniti FX35 2003 3.5 V6 
Infiniti FX35 2004 3.5 V6 
Infiniti FX35 2005 3.5 V6 
Infiniti FX35 2006 3.5 V6 
Infiniti FX35 2007 3.5 V6 
Infiniti FX35 2008 3.5 V6 

の範囲内Infiniti EX35はどのように私はこのようなコンパクトな選択をすることができますか?

Infiniti EX35 2008-2010 3.5 V6 
Infiniti EX37 2007-2010 3.7i V6 
Infiniti FX35 2003-2008 3.5 V6 

ありがとうございます!

答えて

2
SELECT Make, Model, 
    CASE 
     WHEN MIN(Year) = MAX(Year) 
     THEN MIN(Year) 
     ELSE CONCAT(MIN(Year), '-', MAX(Year)) 
    END As Year, 
    OtherColumns 
FROM tableName 
GROUP BY Make, Model, OtherColumns 
+0

で入力の過程にあった答えです!!!!!! – Tuco

2

ような何か:

Select Make, Model, Concat(Min(Year),'-',Max(Year)) As Range, EngineType 
From Table 
Group By Make, Model 
+1

1は、GROUP BYでEngineTypeを逃したが、それは私がありがとう –

1

私はあなたの質問を理解していれば、IMOそれは一つのフィールドに範囲を置くことは良い考えではないでしょう - それは扱うことは非常に困難になり、それ以外の非正規化だに。 Isnteadは、2つのフィールドを "start_year"と "end_year"にして、オンにするのが簡単になり、物事を正規化します。

- ピート