2016-08-06 3 views
0

MYSQL 신참자는 여기에서 나와 함께하시기 바랍니다.생성 된 열에서 값순으로 mysql 테이블 행을 순서대로 정렬하십시오.

  • 모델
  • MPG
  • 가격
  • 좌석

을하고 내가 가진 :

나는 자동차에 대한 데이터를 저장 Cars라는 테이블이 테이블이 priority 인 st 각 차 특성이 0-5 가늠자에 저에게 얼마나 중요한 지. 그래서이 테이블과 같습니다 나는 각 Car 원하는에 대한 점수를 생성 할 수 있도록하려면

+-----+-------+-------+ | MPG | Price | Seats | +-----+-------+-------+ | 0 | 2 | 3 | +-----+-------+-------+

다음과

score = (car.MPG * priority.MPG) + (car.Price * priority.Price) + (car.seats * priority.seats)

내가 원하는 Select * from cars order by score을 본질적으로 할 수 있습니다. 하지만이 쿼리를 구성하는 방법을 잘 모르겠습니다.

도움을 주시면 대단히 감사하겠습니다.

답변

1

봅니다

select a.* from cars a, priority b order by ((a.mpg* b.mpg)+(a.price*b.price)+(a.seats*b.seats)) 
+0

이 위대한 작품을 사용할 수 있습니다. 내 점수 시스템이 더 복잡해지면 함수로 저장하고 어떻게 든 부를 수있는 방법이 있는지 궁금합니다. – user3509258

+1

예 ... 당신이 기능'score'를 생성하는 기능 를 만들 수 있습니다 (... 당신의 매개 변수 (mpg..price을 좌석을 ...)) INT 이 당신의 점수 시스템 ... RETURNS을 BEGIN RETURNS 값 .. END; ... 및 쿼리에 ..이 기능 를 호출은을 선택 * 자동차에서 순서를 점수 (a.mpg, a.price, a.seats) – Christian

+0

행운에 의해. 이 제안 – Christian

0

주 선택을 주 절을 포함하는 다른 선택으로 포장해야합니다. 이런 식으로 뭔가 :

SELECT * FROM (SELECT c.*, ((c.MPG * priority.MPG) + (c.Price * priority.Price) + (c.seats * priority.seats)) AS score FROM cars) x ORDER BY x.score