2012-07-18 2 views
0

간단히 설명 : 가장 높은 furni 값 (pricelist_furnis_tradevalue.value)에 레코드 amount (= games_records.amount)를 곱한 테이블 games_records의 모든 레코드를 가져 오려고합니다. furni 값은 pricelist_furnis_tradevalue에 있습니다. ... pricelist_furnis_tradevalue에는 일부 furnis에 대해 여러 항목이 있습니다. 최신 항목 만 가져오고 싶습니다. 따라서 pricelist_furnis_tradevalue.time에서 주문해야합니다. 그러나 아래 쿼리는 각 furni/레코드에 대한 pricelist_furnis_tradevalue의 모든 항목을 반환합니다.SQL Join 테이블을 곱한 값으로 정렬하십시오.

다음
SELECT * 
FROM games_records 
JOIN pricelist_furnis_tradevalue 
    ON games_records.furni = pricelist_furnis_tradevalue.furni 
ORDER BY (pricelist_furnis_tradevalue.value*games_records.amount) DESC 

games_records

2 개 필요한 테이블의 구조입니다 내가 어떤 도움을 주셔서 감사합니다 것
id  furni  value  time 
1  2   20   1334065379 
2  2   50   1334067445 
3  2   100   1334092057 
4  4   50   1334065375 
4  4   20   1334067436 

id  user  furni  amount  time 
1  2   4   40   1338052926 
2  4   30   90   1338054046 

pricelist_furnis_tradevalue

! 감사!

+0

당신이'pricelist_furnis_tradevalue.value * games_records.amount'을 선택 봤어 : 여기

하나의 방법이다? – Kermit

+0

@njk를 사용하고이를 AS 변수로 정의한 다음 ORDER BY 변수 DESC? ** 편집 ** 시도해보십시오. 일하지 않았어. – albin

답변

0

최대 시간으로 기록을 가져와야합니다.

SELECT * 
FROM games_records join 
    (select furni, max(time) as maxtime 
     from pricelist_furnis_tradevalue 
     group by furni 
    ) as maxf 
    on games_records.furni = maxf.furni JOIN 
    pricelist_furnis_tradevalue 
    ON games_records.furni = pricelist_furnis_tradevalue.furni and 
     pricelist_furnis_tradevalue.time = maxf.maxtime 
ORDER BY (pricelist_furnis_tradevalue.value*games_records.amount) DESC 
+0

감사! 이것은 완벽하게 작동합니다! – albin

0
SELECT * FROM 
    (SELECT *, pricelist_furnis_tradevalue.value*games_records.amount AS 'mult' FROM games_records 
    JOIN pricelist_furnis_tradevalue 
    ON games_records.furni = pricelist_furnis_tradevalue.furni) a 
ORDER BY a.mult DESC