2010-12-17 14 views
0

私はテーブルae_typesを持っています。私は同じaetDaysToWaitで2つのaetProposalType Sは存在しないことを保証していますように、同じテーブルの別のフィールドの最大値に基づいてフィールドのIDを取得する方法

aetId    This is Auto Increment and is the Primary Key 
aetProposalType  Text field 5 characters long 
aetDaysToWait  Byte data type 

aetProposalTypeaetDaysToWaitは一意のキーである:それは私の質問に関連する3つのフィールドが含まれています。

私が探しているのは、それぞれがのaetDaysToWaitのフィールドのaetIdを取得することです。

以下は私がこれを達成するために考え出した質問ですが、おそらく不必要に複雑で非常に美しいものではないようです。

SELECT ae_types.aetId AS lastEmailId, ae_types.aetProposalType 
FROM ae_types INNER JOIN 

(SELECT ae_types.aetProposalType, Max(ae_types.aetDaysToWait) AS MaxOfaetDaysToWait 
FROM ae_types GROUP BY ae_types.aetProposalType) AS ae_maxDaysToWaitByProposalType 

ON (ae_types.aetDaysToWait = ae_maxDaysToWaitByProposalType.MaxOfaetDaysToWait) 
AND (ae_types.aetProposalType = ae_maxDaysToWaitByProposalType.aetProposalType); 

いくつかの代替ソリューションとなぜ彼らは良いだろう何ですか?

PSご不明な点がありましたらお問い合わせください。私はその回答をお寄せください。

+1

あなたは「代替ソリューション」について質問しています...あなたがプレッツェルのノットに身を結ぶときはいつでも、再評価する必要があります。どのようなビジネスルールを実装しようとしていますか?オートインクリメントIDについて何か知りたいと思うことはめったにありません。 – Tim

+0

'ae_types'テーブルの各レコードはイベントタイプを表します。これらのイベントは 'aetDaysToWait'フィールドによって順序付けされ、' aetProposalType'フィールドによってグループ化されます。私は各タイプの最後のイベントのIDを見つける必要があります。私は現在のイベント(別のテーブルからのデータ)が最終的なイベントかどうかをチェックし、そうであればそれをマークします。 – Icode4food

答えて

1

これも私がやっている方法です。