2016-08-01 5 views
-4

다른 웹 사이트 3의 제품 가격을 비교하고 있습니다. 그래서 나는 3 다른 가격이 있습니다. 웹 사이트에서 해당 제품을 제공하지 않으면 가격이 비어 있습니다.Mysql 정렬 빈 열 개수

MySQL은 다음과 같습니다

**id | name | price_1 | price_2 | price 3** 

나는 모든 3 개 웹 사이트 사용할 수있는 제품에서 정렬하고 싶습니다. 하나의 웹 사이트에서만 제공되는 제품입니다.

그리고 어떻게 접근해야하는지 알 수 없습니다!

+0

그냥 ORDER BY price_1, price_2, price_3을 사용하십시오. –

+3

데이터 구조가 현저하게 표준화되면 훨씬 쉬울 것입니다. 그런 다음 조인 된 테이블의 레코드를 'COUNT'하고 개수로 정렬 할 수 있습니다. – David

+0

@antony 그러면 첫 번째 웹 사이트에서만 제공되는 제품의 순위는 두 번째 및 세 번째 제품에서 사용할 수있는 제품보다 높습니다. – syck

답변

0

빈 필드는 NULL 값이있는 경우, 그러나 더 합리적인 해결책이 될 것

SELECT * FROM sometable ORDER BY ISNULL(price_1) + ISNULL(price_2) + ISNULL(price_3) DESC; 

를 사용할 수 있습니다

  • 당신은 제품을 포함하는 하나 개의 테이블을 가지고
  • 당신은이 테이블에 제품의 ID, 가격 및 값이 포함되어 있습니다. 은 해당 웹 사이트에서 해당 가격을 제공했음을 나타냅니다.

장점 :

  • 당신은 단지 그것을
  • 당신은 어떤 시간없이 웹 사이트의 수를 변경할 수 있습니다 나열됩니다 얼마나 많은에 알아 두 번째 테이블에 COUNT(*)에 제품의 항목이 테이블을 변경하면
+0

DESC가 아님, ASC – Rijin

+0

변경하십시오. – syck

0

이 시도 :

SELECT *, (IF(price_1 IS NULL,0,1) + IF(price_2 IS NULL,0,1) + IF(price_3 IS NULL,0,1)) AS odr FROM `test1` ORDER BY odr DESC