基本的に私が持っているのは画像ギャラリーです。学習目的で作成しようとしました。私が今持っているのは、彼/彼女がカテゴリをクリックすると、ギャラリーを選択する次のmysqlクエリが起動されることです:
SELECT ID、名前、gallery_thumb FROM ギャラリー WHERE category1=$category_id または category2=$category_id または category3=$category_id ID DESC で並べ替え
これは、私が一緒に投げた高速でくだらない解決策でした。基本的には、1 つのギャラリーを多くのカテゴリに表示したいと考えています。ここでは、ギャラリーを作成して 3 つ以下のカテゴリに追加できるようにしました。したがって、1 つのギャラリーが異なるカテゴリに表示される場合があります。しかし、この魂は私が望んでいたものではありません。
ギャラリー表:
CREATE TABLE `ギャラリー` (
`ID` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(1000) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `description` varchar(1000) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `category1` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `category2` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `category3` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `web_link` varchar(3000) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `gallery_thumb` varchar(2000) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `reg_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP, 主キー (`ID`) )
必要な機能が動作するようになれば、category2 と category3 は不要になり、削除されます。
タグ表:
CREATE TABLE `gallery_tags` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `tag_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 主キー (`ID`) )
タグとギャラリーの参照表:
CREATE TABLE `gallery_tag_reference` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `gallery_id` int(11) NOT NULL, `tags_id` int(100) NOT NULL, 主キー (`ID`) )
タグ機能を追加しました。ギャラリーを作成すると、好きなだけタグをギャラリーに追加できます。これで、ギャラリーにはメイン カテゴリが 1 つだけになり、それに関連付けられた多くのタグが表示されます。しかし、ギャラリーを作成したときに追加したタグに基づいて、ギャラリーを他のカテゴリにも表示したいと思います。カテゴリには、事前定義された 1 つ以上のタグがあります。私が今やりたいことは、訪問者がカテゴリをクリックしたときに、以前はクエリのフィルタリング部分だけが異なっていたのと同じデータが選択されるようにすることです。
例:
Category1 には、自動車、青、光沢
のあるタグが含まれます。gallery1 には、青、赤、高速のタグが含まれます。
gallery1 はカテゴリ 1 に属していませんが、テーブル「gallery_tags」にタグ「blue」が追加されているため、訪問者がカテゴリ 1 ボタンをクリックしたときに実行されたクエリの結果に表示されます。
例 2:
Category1 にはタグがありません。
Category2 にはタグがありません。
Category3 にはタグがありません。
Category4 には、定義済みのタグ (黄色、赤) があります。
Category5 には、定義済みのタグ (背の高い、高い) があります。
Gallery1 にはタグはありませんが、Category1 に属します。
Gallery2 にはタグがありませんが、Category2 に属します。
Gallery3 には次のタグがあります: 黄色、背の高い、野原
Gallery3 は Category3 に属します。
訪問者が Category4 ボタンをクリックすると、Category4 に属するギャラリーと、「黄色」または「赤」のタグを持つギャラリーが選択されます。ここには Category4 に属するギャラリーはありませんが、黄色のタグを持つ gallery3 があり、Category4 にも定義済みのタグ "yellow" があるため、ギャラリー 3 をクリックすると、Category4 に表示されます。
カテゴリー5も同様です。直接属するギャラリーはありませんが、gallery3 には "tall" というタグが関連付けられており、Category5 にも定義済みのタグ "tall" があるため、gallery3 は Category5 にも表示されます。
私が達成したいことを明確に説明したことを願っています。私は MySQL の経験があまりないので、必要なクエリをまとめるのに苦労しています。誰かが助けてくれることを願っています!