-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.sql
57 lines (50 loc) · 1.5 KB
/
test.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
** Таблица category (id, parent_category_id, name)
**/
/** вывести корневые директории, начинающиеся на "авто" **/
SELECT
*
FROM
`category`
WHERE
`parent_category_id` IS NULL
AND `name` LIKE 'авто%'
/** вывести категории, имеющие не более 3-х потомков **/
SELECT
*
FROM
category
WHERE
id IN (
/** подзапрос выбирает категории, которрые имеют не более 3-х потомков (т.е. являются родителями не более 3-х раз) **/
SELECT
parent_category_id AS category_id
FROM
`category`
WHERE
`parent_category_id` IS NOT NULL
GROUP BY
`parent_category_id`
HAVING
count( * ) <= 3
)
/** вывести самые нижние категории (которые не имеют потомков, т.е. не являются родителми каких либо подкатегорий) **/
SELECT
*
FROM
category
WHERE
id NOT IN (
/** подзапрос выбирает категории, которые являются родителями каких либо подкатегорий **/
SELECT
parent_category_id
FROM
`category`
WHERE
parent_category_id IS NOT NULL
GROUP BY
parent_category_id
)
/** какие индексы нужны для ускорения выполнения запросов **/
ALTER TABLE `category`
ADD INDEX `idx`(`parent_category_id`);