PHP で検索ボックスを作成し、MySQL をデータベースとして使用していますが、検索すると、Colours、Products、Categories の 3 つのテーブルがあり、これらにはすべて ID 番号があり、リンクできます。私はどこでもINNER JOIN、LEFT、RIGHTを使用しようとしましたが、運が悪く、クエリが機能し、複数のアイテムを吐き出すことがあります。そのため、すべてのテーブル フィールド名が 1 つになり、そのテーブルに簡単にクエリを実行できる、1 つのテーブルがすべてに適合するシナリオの作成を検討しています。テーブルを手動で作成しましたが、3 つのテーブルのデータをメインのテーブルにコピーする方法はありますか? 1 つのテーブルのみを処理するクエリであれば、個別に実行してもかまいませんが、600 行以上あるため、すべてのデータを手動で入力する必要はありません。
現在使用しようとしているコードは次のとおりです。
SELECT
categories.Product_Type, items_colors.ColourImageurl,
items_list.description, items_list.Description2,
items_list.title, items_list.id, categories.title AS title2,
items_colors.itemID, Colour Name
FROM items_list
LEFT JOIN categories ON categories.Product_Type = items_list.CatID
LEFT JOIN items_colors ON items_list.id = items_colors.itemID
WHERE items_list.visible = 1 AND
Colour Name LIKE '%".$search."%'
カテゴリは、選択する製品のタイプを定義します。items_list にはすべてのサブカテゴリ名のリストがあり、item_colors には、items_list 製品にリンクするすべての色名のリストがあります。このクエリを使用すると、1 つのアイテムのコピーが 4 つ出力されますが、その理由がわかりません。