2011-02-08 3 views
1

내가 여러 테이블에 기본 키를 참조하여 값을 검색하려고하지만 result.Here을 얻을 수 없습니다 테이블여러 참조

밀도 표

**de_id density color** 
    1 21 red 
    2 22 blue 
    3 23 green 
    4 24 yellow 
    5 25 orange 

크기입니다 표

**si_id length breadth** 
1  21  41 
2  22  42 
3  23  43 
4  24  44 
5  25  45 

Order_de 표

**or_id density color length breadth** 
1  1   2  3  4 
2  4   3  2  1 

내가 해결하려고 노력하고 쿼리

SELECT density.density,density.color,size.length,size.breadth,order_de.or_id from 
    density,size,order_de WHERE order_de.density=density.de_id and 
    order_de.color=density.de_id and order_de.length=size.si_id and 
    order_de.breadth=size.si_id order by order_de.or_id asc 

는 원하는 결과가

density color length breadth or_id 
    21 blue  23 44  1 
    24 green  22 41  2 

해야하지만 쿼리는 아무것도 검색하지 않습니다. 아무도 도와 줄 수 있습니까 ??

+1

왜이 스키마가 나에게 적합하지 않습니까? 일반적인가요? – Nishant

+0

@Nishant : 특히 동일한 ID를 사용하여 같은 테이블에 관련없는 속성 (밀도, 색상)을 저장하는 것은 나에게별로 의미가 없습니다. –

+0

@Joe Stefanelli 그것은 조밀도 및 색깔을 가진 화학 물질의 테이블일지도 모른다. 그러나 데이터를 추출해야하는 방식으로 머리를 회전시킵니다. 그는 한 테이블에서 두 행의 속성을 원합니다. 밀도 21은 빨간색이 아니고 파란색은 값 21의 밀도와 같지 않습니다. 생각하는 방식은 다음과 같습니다. 한 행은 하나의 항목을 나타내며 FK는 포인터입니다. 왜 속성을 혼합하고 싶습니까? – Nishant

답변

1

밀도, 색, 길이 및 너비와 같이 각 특성에 대해 테이블에 독립적으로 조인해야합니다. 또한 암시 적 조인 스타일을 사용하지 마십시오. 나는 이것이이 쿼리를 작성하는 데 혼란을 가져 왔다고 생각합니다.

SELECT d1.density, d2.color, s1.length, s2.breadth, o.or_id 
    FROM Order_de o 
     INNER JOIN Density d1 
      ON o.density = d1.de_id 
     INNER JOIN Density d2 
      ON o.color= d2.de_id 
     INNER JOIN Size s1 
      ON o.length = s1.si_id 
     INNER JOIN Size s2 
      ON o.breadth = s2.si_id 
    ORDER BY o.or_id asc 
관련 문제