0

私はビデオを保存するSQLデータベース、テーブル名:ビデオを持っています。このテーブルの関連する列は、id、category_idおよびvideo_idです。

id は一意の id です。カテゴリに関係なく、すべての動画に異なる id があり、カテゴリに関係なく同じ id はあり得ません。

category_idも一意であり、それぞれがカテゴリに割り当てられます。たとえば、Funny は 1 です。

このvideo_id列に同じ値を持つ複数の行が存在する可能性があります。たとえば、ある動画が YouTube でホストされていて、まったく同じ動画が Vimeo でホストされているとします。次に、鏡があります。確かに、あなたはどのように考えていますか?データベースは、ページによって呼び出されるビデオへの埋め込みコードのみを保存します。

ビデオが表示されるクライアント側のページは、割り当てられた ID だけでビデオを呼び出します。言いましょう: - 誰かが面白いカテゴリを開きます。次に、クライアント側は次のように表示されます: from tablename videos where category_idis 1. - YouTube と Vimeo の 2 つのミラーを持つ Funny Fails というビデオがあり、両方の行の ID は異なりますが、同じであると仮定しますvideo_id。YouTube の Funny Fails ミラーは何らかの理由で id 1 を取得し、Vimeo は id 2 を取得しました (簡単にするため)。もちろん、両方のビデオにvideo_id1 があり、1 の内部にありcategory_idます。

クライアント側の .php は単に ID を探します (例:/category_detail.php?id=1または/videopage.php?id=1.

これで、おそらくデータベースと、クライアント側がデータベースから情報を取得する方法について理解できたと思います。

やりたいことは、クライアント側のページに 2 つのオプションを追加するだけです。前の動画と次の動画です。

ID 110、123 を1video_id内でブラウズしていると仮定しcategory_idます。ミラーはありません。

[前のビデオ] を押すと、1 のvideo_id中に 122 がcategory_idあり、動的な部分である ID 自体が検索されます。この ID は、ページを作成するリンクの一部でもあります。たとえば、これは の後に続く ID と同じ.php?id=XXXです。

私はしばらく苦労してきましたが、解決策がはるかに簡単であることは知っていますが、どういうわけか解決できません。

ミラーの有無に関係なくvideo_id、同じ 内で明らかに 124を検索する [次のビデオ] オプションも必要です。category_id

4

1 に答える 1

1

前:

  SELECT * FROM videos WHERE category_id = 1 AND video_id < 123 
  ORDER BY video_id DESC LIMIT 1;

次:

  SELECT * FROM videos WHERE category_id = 1 AND video_id > 123 
  ORDER BY video_id ASC LIMIT 1;

Bill が正しく言ってUNIONいるように、クエリを 1 回だけ実行すればよいので、それらを実行できます。

于 2012-12-12T22:44:24.067 に答える