2012-12-17 4 views
0

PHP로 검색 상자를 만들고 데이터베이스로 MySQL을 사용하고 있지만 검색 할 때 색상, 제품 및 범주라는 3 개의 테이블이 있으며 모두 ID 번호가 있으며 연결할 수 있습니다. 내부 조인, 왼쪽, 오른쪽, 모든 곳에서 사용할 수 있지만 행운이 없으므로 쿼리가 작동하고 여러 항목이 누출됩니다. 그래서 모든 테이블 필드 이름이 하나로 합쳐져서 그 테이블을 쉽게 쿼리 할 수있는 하나의 테이블에 맞는 시나리오를 만들려고합니다. 나는 테이블을 수동으로 만들었지 만, 3 테이블의 데이터를 주요 테이블로 복사하는 방법이 있습니까? 하나의 테이블 만 처리하는 쿼리 인 경우 별도로 처리하되 상관 없지만 600 + 행이 있으므로 모든 데이터를 수동으로 입력하지 않아도됩니다. 여기 MySQL Merge 3 Tables into 1

내가 현재 사용하려고하는 코드입니다 :

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 개의 복사본이 출력되며 이유는 확실하지 않습니다.

+2

예를하시기 바랍니다 사용. – Flukey

+0

UNION을 살펴 봐야합니다. 그것이 여기서 도움이되는 것입니다. http://dev.mysql.com/doc/refman/5.0/en/union.html –

+0

@Flukey 여기에 내가 사용하려고 시도하는 코드가 있지만 동일한 항목의 복사본이 적어도 4 번 표시됩니다. 카테고리 선택. 제품 유형, 항목 _ 색상. 색상 정보 항목, 항목 _ 목록, 항목 _ 목록. 설명 2, 항목 _ 목록. 제목, 항목 _ 목록 .id, 카테고리. 제목 AS 제목 2, 항목 _ 색상. 항목 ID, 색상 이름 발신 항목 _ 목록 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'Color Name' LIKE '% ". $ 검색."% "" – Alex

답변

0

쿼리에서 데이터를 가져 오는 경우 "create table as select"문을 사용하여 이전 테이블의 데이터로 새 테이블을 만들 수 있습니다. 추가 정보를 원하시면 여기를

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

검사 : SQL의 http://dev.mysql.com/doc/refman/5.1/en/create-table.html

+0

쿼리에서 데이터를 가져 오지 못하기 때문에 3 개의 테이블을 미러링하고 하나의 테이블로 영구 병합하려고합니다. 테이블이 너무 많이 업데이트되지 않아 나에게 적합합니다 .. – Alex

+0

items_list.id가 고유하다고 가정하면 items by list.id를 사용하십시오. –