2012-06-20 2 views
1

모든 item에 대한 모든 정보를 얻고 싶습니다. 항목에는 전역 변수 (여기에서 on_stock)가 있지만 모든 항목에는 다른 표에 고유 한 속성이 있으며 테이블에는 항목 유형 이름과 동일한 이름이 있습니다. 예상동적 테이블 이름 선택 및 조인

[items] 
id | on_stock | type_id 
-----+----------+----------- 
    1  1  1(=car) 
    2  0  1(=car) 
    3  1  2(=ship) 
    4  0  2(=ship) 

[types] 
id | name 
----+-------- 
    1  car 
    2 ship 

[car] 
id | top_speed 
----+----------- 
1  200 
2  300 

[ship] 
id | color 
-----+------- 
3  red 
4  blue 

: 여기

는 샘플입니다 .ID>name

  • name에서 항목을 선택 조인 -

    1. 항목을 선택
    2. 이 유형의 테이블 ID에 미치는 TYPE_ID 가입 검색 결과 :

      1 on_stock=1 top_speed=200 
      2 on_stock=0 top_speed=300 
      3 on_stock=1 color=red 
      4 on_stock=0 color=blue 
      

      도와주세요.

  • +0

    이것은 매우 좋은 데이터베이스 디자인이 아닌 이유입니다. 나는 당신이 당신의 테이블을 다시 디자인하는 것이 좋습니다. 이 디자인이 당신에게주는 두통 중 첫 번째 일뿐입니다. – JohnFx

    +0

    @JohnFx 이것은 새로 디자인 된 것입니다. 이 디자인을 어떻게 재 설계하겠습니까? –

    +0

    @JohnFx이 항목을 쉽게 만들 수있는 항목 테이블에 형식 이름을 저장하는 경우 알지만이 방법은 더 우아합니다. –

    답변

    0

    한 번의 요청으로 처리 할 수없는 경우 더 많은 항목 (1 + 항목 유형 개수)으로 처리 할 것입니다. 제

    , 난 (ID => 이름) 배열로 필요한 유형 필요

    $req_types = array(); 
        $rs = mysql_query(" 
         SELECT items.type_id,types.name 
         FROM items 
         JOIN types ON items.type_id=type.id 
         GROUP BY items.type_id 
         "); 
        while($type= mysql_fetch_assoc($rs)) 
         $req_types[$type['id']] = $type['name']; 
    

    다음 I 공통 및 개별 상품 데이터해야 그것은 거의 없다

    $groups = array();  
    foreach($req_types as $table) 
         { 
          $rs = mysql_query(" 
            SELECT items.*,$table.* 
            FROM items 
            JOIN $table ON $table.id=items.id 
            "); 
          while($item = mysql_fetch_assoc($rs)) 
           $groups[$table][] = $item; 
         } 
    
    0

    을 그러나 둘 다 데이터 구조가 아닙니다. 다음은 쿼리를 새 항목 유형을 추가 할 때마다 조정할해야합니다

    SELECT I.id, I.On_stock, C.top_speed,S.Color 
    FROM ITEMS I 
    LEFT JOIN Car C ON (I.ID = C.CarID) 
    LEFT JOIN Ship S ON (I.ID = S.ShipID) 
    

    를 원하는 것을 할 수있는 쿼리입니다,하지만이 데이터 구조의 단지 단점이다.