結果を得るために私のスコープにmysqlクエリを書くという問題に直面しています。実際、この既存のクエリを使用して適切な結果を得ていますが、適切な方法で書かれていません。これが私のクエリです:
SELECT c.ID, c.chn_name,c.chn_logo,
(SELECT ID FROM tv_showtime WHERE showtime<='2013-02-18 10:28:35' AND status='Enable' AND chn_id=c.ID ORDER BY ID DESC Limit 0,1) as currentshowid,
(SELECT tv_showtime FROM tv_showtime WHERE showtime<='2013-02-18 10:28:35' AND status='Enable' AND chn_id=c.ID ORDER BY ID DESC Limit 0,1) as currentshowtime ,
(SELECT tv_showtime FROM tv_showtime WHERE showtime >'2013-02-18 10:28:35' AND status='Enable' AND chn_id=c.ID ORDER BY ID ASC Limit 0,1) as nextshowtime
FROM tv_channels AS c
WHERE c.status="Enable"
ORDER BY c.chn_name
LIMIT 0,10
ここでは、「tv_channels」と「tv_showtime」という名前のテーブルが 2 つだけあります。一度に各チャネルに 1 つのレコードが必要です (現在の時間)。したがって、ここでは、12 のチャンネルと、各チャンネルに約 30 (チャンネルごとに異なる場合があります) のレコードがあり、現在の番組のチャンネルのみを表示する必要があるとします (より明確にするために、現在の番組時間および/または次の番組時間を持つチャンネルのみが表示されます。 )
問題: 他の必要な値を表示するには、「tv_showtime」のフィールド値がさらに必要です。この方法を使用する場合は、内部選択クエリをさらに作成する必要があり、Web サイトの読み込みが遅くなります。このクエリを書くための他の方法を提案またはアドバイスできますか?
データベース テーブルの詳細:
- tv_channels [ID, chn_name, [その他の必須フィールド]],
- tv_showtime [ID、chn_id、showtime、show_name、hits、last_ip [その他いくつかのフィールド]]
この質問を得るためにさらに詳細が必要な場合はお知らせください。任意のヘルプや提案をいただければ幸いです。ありがとう。