|
|
|
Сортировка по максимальному количеству вхождений в IN
|
|||
|---|---|---|---|
|
#18+
есть 3 таблицы. Продукты, рецепты, и связь продуктов с рецептами. product idname1соль2молоко3сметана recept idname1блины2каша3пирог product_to_recept idproduct_idrecept_id111221322 Я ищу рецепты, по продуктам. Код: plsql 1. 2. 3. 4. 5. 6. но такой запрос вернет мне все рецепты где встречаются продукты с id 12,3 или 4. Возможно ли как то отсортировать результат запроса, таким образом, чтобы самые первые были рецепты, в которых есть максимальное вхождение по id продуктов? То есть, я бы хотел чтобы сперва шли рецепты в которых есть все 3 продукта (12,3,4) затем шли рецепты где есть 2 продукта (12,3) (12,4) (3,4), затем чтобы шли рецепты в которых встречается 1 продукт (12 или 3 или 4). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2016, 21:45 |
|
||
|
Сортировка по максимальному количеству вхождений в IN
|
|||
|---|---|---|---|
|
#18+
Как-то так: Код: sql 1. 2. 3. 4. 5. По производительности, правда, не фонтан. Но если данных немного, то сойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2016, 22:45 |
|
||
|
Сортировка по максимальному количеству вхождений в IN
|
|||
|---|---|---|---|
|
#18+
miksoft, Спасибо, немного поменял, но суть запроса понял. Большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2016, 22:58 |
|
||
|
Сортировка по максимальному количеству вхождений в IN
|
|||
|---|---|---|---|
|
#18+
miksoft, а почему не SELECT recept_id, GROUP_CONCAT(product_id) product_list FROM product_to_recept as ptr WHERE ptr.product_id IN (12,3,4) GROUP BY ptr.recept_id ORDER BY count(*) DESC в этом случае группировка будет идти после отбора нужных рецептов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2016, 01:13 |
|
||
|
Сортировка по максимальному количеству вхождений в IN
|
|||
|---|---|---|---|
|
#18+
retvizanв этом случае группировка будет идти после отбора нужных рецептовНо тогда содержимое рецептов будет ограничено перечисленными идентификаторами. А в моем запросе полный список продуктов для выбранных рецептов. Если же нужны только идентификаторы рецептов, то да, Ваш запрос более оптимальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2016, 01:18 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=91&tid=1831364]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 337ms |

| 0 / 0 |
