2017-09-14 3 views
1

에서 기준에 따라 자체에 테이블을 여기에 내가 해결하기 위해 노력하고있는 문제입니다 가입 :MySQL을 - 다른 테이블

그 날짜에 대한 제품 ID의, 날짜 및 가격을 가지고, 표 2는이 제품 속성은.

속성 세트를 기반으로 같은 날짜에 다른 제품의 클라이언트 가격을 비교할 수 있기를 원합니다. 나는 '단순한'제품뿐만 아니라 '고급'제품 (아래 참조)에 대한 제품/날짜/가격리스트를 쉽게 얻을 수있다.

나는 출력이 보이는 있도록이 두 테이블을 조인 할 수 있도록하려면 같은 :

[CLIENT] [제품] [DATE] [SIM_PROD] [SIM_PRICE] [ADV_PROD] [ADV_PRICE]

다음

은 지금까지 나는

SELECT b.NAME AS ‘CLIENT’, a.NAME AS ‘SIMPLE_PRODUCT’, t1.DATE AS ‘DATE’, t1.PIVOT_PRICE AS ‘SIMPLE_PRICE’ 
FROM TABLE1 t1 
LEFT JOIN PRODUCT a 
ON t1.PRODUCT_ID = a_PRODUCT_ID 
LEFT JOIN CLIENTS b 
ON a.PARTNER_ID = b.PARTNER_ID 
WHERE a.CRITERIA = TRUE; 


SELECT b.NAME AS ‘CLIENT’, a.NAME AS ‘ADV_PRODUCT’, t2.DATE AS ‘DATE’, t2.PIVOT_PRICE AS ‘ADV_PRICE’ 
FROM TABLE1 t2 
LEFT JOIN PRODUCT a 
ON t2.PRODUCT_ID = a_PRODUCT_ID 
LEFT JOIN CLIENTS b 
ON a.PARTNER_ID = b.PARTNER_ID 
WHERE a.CRITERIA = FALSE; 

내가 T1 그때부터 다시 가격에 당겨로 TABLE1 라벨에서 가격을 끌어 유사한 테이블을 구축 할 수있었습니다했습니다과 같다 TABLE1을 만들고이를 t2로 레이블링하지만 TABLE1의 기준을 사용할 때만 조인해야하는 테이블의 기준이 아 U니다.

테이블을 '설정'하고 (EG 간단) 두 번째 테이블을 설정 (EG 고급) 한 다음 PARTNER_ID 및 DATE에 가입 할 수 있습니까?

+0

두 쿼리가 서로 다른 두 테이블 인 경우 하나의 테이블을 다른 테이블과 연관시키는 데 사용하는 필드 또는 필드가 있습니까? 당신이 원하는 새로운 기록을 어떤 기준에 따라 출력 할 것인지 결정하십시오. – Juan

+0

클라이언트, 제품 및 날짜의 각 조합에 대해 동일한 기준 값을 가진 레코드의 수는 얼마입니까? 샘플 데이터와 원하는 결과를 제공하는 것이 좋습니다. –

+0

MySQL에서는 둥근 따옴표를 사용할 수 없습니다. 열 이름은 백틱으로 인용해야합니다. – Barmar

답변

0

당신은 두 개의 하위 쿼리에 가입 할 수 있습니다 :

SELECT t1.client, t1.date, t1.simple_product, t1.simple_price, t2.adv_product, t2.adv_price 
FROM (
    SELECT b.NAME AS CLIENT, a.NAME AS SIMPLE_PRODUCT, t1.DATE, t1.PIVOT_PRICE AS SIMPLE_PRICE 
    FROM TABLE1 t1 
    LEFT JOIN PRODUCT a 
    ON t1.PRODUCT_ID = a_PRODUCT_ID 
    LEFT JOIN CLIENTS b 
    ON a.PARTNER_ID = b.PARTNER_ID 
    WHERE a.CRITERIA = TRUE 
) AS t1 
JOIN (
    SELECT b.NAME AS CLIENT, a.NAME AS SIMPLE_PRODUCT, t1.DATE, t1.PIVOT_PRICE AS SIMPLE_PRICE 
    FROM TABLE1 t1 
    LEFT JOIN PRODUCT a 
    ON t1.PRODUCT_ID = a_PRODUCT_ID 
    LEFT JOIN CLIENTS b 
    ON a.PARTNER_ID = b.PARTNER_ID 
    WHERE a.CRITERIA = FALSE 
) AS t2 
ON t1.client = t2.client AND t1.date = t2.date 

당신은 추가 기준을 선택하고 ON 조건에 추가 아마도이 필요합니다. 그렇지 않으면 클라이언트와 날짜가 동일한 모든 제품간에 완전한 교차 제품이 생성됩니다.

원하는 출력에 추가 PRODUCT 열이 있지만 그 원인을 볼 수 없습니다.

+0

이것은 완벽하게 작동하고 정확히 내가 찾던 내용이었습니다 - 정말 고마워요! – scoloe

+0

문제가 해결되면 대답을 수락해야합니다. – Barmar