powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложная выборка из записей
6 сообщений из 6, страница 1 из 1
Сложная выборка из записей
    #39359751
bastardi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!

Есть интересная задача для знатоков. Имеем таблицу table со многими полями, в том числе с полем Id и полем color Значения в полях не уникальны и могут повторяться. В поле ID - число, в поле color - цвет. Переходим к таблице, примерный вид такой

Id | ... | ... | ... | color | ... | ... | ...
1 | ... | ... | ... | red
2 | ... | ... | ... | red
2 | ... | ... | ... | blue
5 | ... | ... | ... | blue
5 | ... | ... | ... | green
7 | ... | ... | ... | black
8 | ... | ... | ... | red
22 | ... | ... | ... | blue
33 | ... | ... | ... | red
33 | ... | ... | ... | blue
33 | ... | ... | ... | green

Задача. Выбрать distinct table.ID записей, у которых определенному значению поля ID есть значения поля color red И blue . В нашем случае итогом будет 2 и 33. Для записи с ID=1 и color=red нет ни одной записи с ID=1 и color=blue, для записи с ID=5 и color=blue нет ни одной записи с ID=5 и color=red и т.д. Записи с ID=33 имеют "лишний" цвет green, но это не противоречит поставленному условию, поэтому в результате будет присутствовать 33. Итак
2
33
Вдогонку, надо составить похожий запрос, получающий количество этих полей, то есть 2 (а не 5). Я так понимаю, что нужно составлять запрос SELECT с вложенным SELECT запросом? А можно ли это сделать без вложенных запросов? Так или иначе, прошу дать решение этой задачи. Я не знаю ни одного решения, так как нуб
Спасибо заранее, рябят!
...
Рейтинг: 0 / 0
Сложная выборка из записей
    #39359779
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastardi,

 Ну такое.

Что в ней интересного?

Код: 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.
58.
59.
60.
mysql> CREATE TABLE `colors` (
    ->   `id` int(11) NOT NULL,
    ->   `color` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO `colors` (`id`, `color`)
    -> VALUES
    -> (1, 'red'),
    -> (2, 'red'),
    -> (2, 'blue'),
    -> (5, 'blue'),
    -> (5, 'green'),
    -> (7, 'black'),
    -> (8, 'red'),
    -> (22, 'blue'),
    -> (33, 'blue'),
    -> (33, 'green'),
    -> (33, 'red');
Query OK, 11 rows affected (0.00 sec)
Records: 11  Duplicates: 0  Warnings: 0

mysql> SELECT 
    -> id
    -> FROM 
    -> colors
    -> WHERE 
    -> color = 'red'
    -> OR 
    -> color = 'blue'
    -> GROUP BY 
    -> id
    -> HAVING 
    -> COUNT(DISTINCT color) = 2;
+----+
| id |
+----+
|  2 |
| 33 |
+----+
2 rows in set (0.00 sec)

mysql> SELECT 
    -> DISTINCT COUNT(id)
    -> FROM 
    -> colors
    -> WHERE 
    -> color = 'red'
    -> OR 
    -> color = 'blue'
    -> GROUP BY 
    -> id
    -> HAVING 
    -> COUNT(DISTINCT color) = 2;
+-----------+
| COUNT(id) |
+-----------+
|         2 |
+-----------+
1 row in set (0.00 sec)



Задачка для 10-й страницы учебника по SQL
...
Рейтинг: 0 / 0
Сложная выборка из записей
    #39359780
bastardi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MikkiMouse, спасибо, друг
...
Рейтинг: 0 / 0
Сложная выборка из записей
    #39359816
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastardi,
это неправиоьное решение.
...
Рейтинг: 0 / 0
Сложная выборка из записей
    #39359939
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Ну так напиши правильное, не базарь лишнего
...
Рейтинг: 0 / 0
Сложная выборка из записей
    #39360315
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouse,

не, не буду, мне твоя “интересная" задача неинтересна.

учи SQL, делай сам.
Подскажу,

там либо запрос с двумя exists, либо два join.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложная выборка из записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]