0

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 つ出力されますが、その理由がわかりません。

4

1 に答える 1

0

クエリからデータを取得する場合は、「create table as select」ステートメントを使用して、古いテーブルのデータを使用して新しいテーブルを作成できます。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    [partition_options]
    select_statement

詳細については、こちらをご覧ください: http://dev.mysql.com/doc/refman/5.1/en/create-table.html

于 2012-12-17T09:23:41.053 に答える