私は、最長の映画レンタル期間と上記の映画を借りた顧客(および映画)をSakilaデータベースに保存します。"最長の映画レンタル期間とその映画をレンタルした顧客" MySQL Sakilaのクエリ
最初のステップとして、私はfilm_id、inventory_id、CUSTOMER_IDと(週単位)レンタルの最長期間を返すことになっている次のクエリ、書いている:私はまだ
SELECT DDIFF.*
FROM (SELECT rental.inventory_id, rental.customer_id, DATEDIFF(rental.return_date, rental.rental_date)/7 AS TM FROM rental) AS DDIFF
INNER JOIN (SELECT DDIFF.inventory_id, DDIFF.customer_id, MAX(DDIFF.TM) AS WEEKS
FROM (SELECT rental.inventory_id, rental.customer_id, DATEDIFF(rental.return_date, rental.rental_date)/7 AS TM FROM rental) AS DDIFF
GROUP BY DDIFF.inventory_id, DDIFF.customer_id) AS MXLST
ON DDIFF.TM = MXLST.WEEKS AND MXLST.inventory_id = DDIFF.inventory_id AND MXLST.customer_id = DDIFF.customer_id
;
をいくつかの予期しない結果が出ています(それは複数のの行を最長で1.4286週間返すはずですが、何らかの理由で1.0週間を取得しています)。私は間違って何をしていますか?私は説明を聞いてとても感謝しています。
thisとthisを正しく試してみましたが、まだ正しい結果を返さないことに注意してください。
編集:てSakilaのtables`構造を見つけることができますhere
テーブルの構造を追加してください。 –
@juergend done、私の編集を参照してください。 – Kyle
あなたのSQLは私の心よりも進んでいるので、結果は最も近い整数に丸められているか、または結果が整数のみを必要とする列/変数に書き込まれていると推測しています。 –