2016-02-09 3 views
-1

У меня есть следующий запрос:SQL запрос с использованием PostGreSQL

SELECT DISTINCT "stylists".* FROM "stylists" 
INNER JOIN "category_stylists" ON "category_stylists"."stylist_id" = "stylists"."id" 
WHERE category_stylists.category_id IN (1,2) 

Но я хочу заказать стилист по категориям.

Например:

Stylists 
id | Name 
1  Sebastian 
2  Jhon 

Categories 
id | Name 
1  Wedding 
2  Office 

Stylist_Categories 
id | stylist_id | category_id 
1   1    1 
2   2    1 
3   2    2 

Так что если я применяю мой запрос, я получил как стилист, но мне нужно всегда порядка, на сколько категорий имеют стилист. Я имею в виду в этом примере Jhon будет первая строка, потому что имеет category_id 1 и 2. category_id

Результат ожидаемый:

Stylists 
id | Name 
2  Jhon 
1  Sebastian 

Спасибо заранее!

ответ

1

Попробуйте подсчета категории для каждого стилиста и порядка им:

SELECT "id","name" from(
    SELECT "stylists"."id", "stylists"."Name",count(stylists.id) as cnt FROM "stylists" 
    INNER JOIN "category_stylists" ON "category_stylists"."stylist_id" = "stylists"."id" 
    WHERE category_stylists.category_id IN (1,2) 
    group by "stylists"."id", "stylists"."Name") 
order by cnt desc 
+0

Спасибо! Это сработало!! : D – sebaMelgar

+0

Без проблем @sebaMelgar. – sagi

Смежные вопросы