使用する必要がある SQL クエリを見つけようとして、頭がぐるぐる回っています。さまざまなネストされたクエリと自己結合を試しましたが、すべてが失敗しています。私はそれを考えすぎていると思います。
基本的な考え方: 私は単一のテーブルを持っています。それを呼び出しましょう。テーブルOrderTable
には 4 つの (関連する) フィールドがあります: OrderId
、CustomerId
、RestaurantId
、OrderTime
顧客が注文すると、日時スタンプがOrderTime
フィールドに追加されます。他の 3 つのフィールドは単なる整数で、そのOrderId
フィールドが主キー (および自動インクリメント) です。
CustomerId
その顧客の最初のレコード (最も早い日付) が特定の日付 (たとえば、「2012-03-14」) であり、RestaurantId が特定の番号 (たとえば、29)。
現時点では、非常に複雑な方法であるとしか思えません。また、現在、サブクエリに一致するレコードが複数ある場合、「#1242 - サブクエリが複数の行を返します」というエラーが発生します。
よりエレガントなソリューションを手伝ってくれる人はいますか? ありがとう!
現在のクエリ:
SELECT `CustomerId`
FROM `OrderTable`
WHERE `OrderTime` LIKE '%2012-03-14%'
AND `RestaurantId`='29'
AND `OrderId`=(SELECT `OrderId`
FROM `OrderTable`
WHERE `RestaurantId`='29'
GROUP BY `CustomerId`
ORDER BY `OrderTime` ASC
)