0

我在 PHP 中创建了一个搜索框并使用 MySQL 作为数据库,但是在搜索时有 3 个表,颜色、产品和类别,它们都有一个 ID 号并且可以链接。我曾尝试在任何地方使用 INNER JOIN、LEFT、RIGHT,但没有运气,查询有时会起作用,吐出多个项目。因此,我正在考虑创建一个通用的场景,其中所有表字段名称都将在一个表中,我可以轻松地查询该表。我已经手动创建了表,但是无论如何将 3 个表中的数据处理到那个主表中?如果它是一个只处理一个表的查询,我不介意单独执行它,但我希望不必手动输入所有数据,因为有 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 产品的所有颜色名称的列表。当我使用这个查询时,它会输出一个项目的 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 回答