powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как узнать количество животных, которые живут в море и на Южном полюсе?
9 сообщений из 9, страница 1 из 1
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38684112
wolfandman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Три таблицы:

Животные (animals):
Код: plsql
1.
2.
3.
4.
id | name
1  | Лев
2  | Пингвин
3  | Дельфин



Таблица мест обитания (arials):
Код: sql
1.
2.
3.
4.
id | name
1  | Южный полюс
2  | Африка
3  | Море




Таблица связей (relations):
Код: sql
1.
2.
3.
4.
5.
id | animalID | propID
1  | 1        | 2 (Африка)
2  | 2        | 1 (Южный полюс)
3  | 2        | 3 (Море)
4  | 3        | 3 (Море)





Вопрос:

Как узнать количество животных, которые живут в море и на Южном полюсе?

Мы знаем, исходя из таблицы, что в море и на южном полюсе одновременно может жить только пингвин. Мы должны найти только одну запись.
...
Рейтинг: 0 / 0
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38684121
wolfandman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С одним животным, которое живёт в море и на южном полюсе наверно будет просто.
А как с двумя такими животными быть?

Животные:
Код: sql
1.
2.
3.
4.
5.
id | name
1  | Лев
2  | Пингвин
3  | Дельфин
4  | Тюлень



Таблица связей:
Код: sql
1.
2.
3.
4.
5.
6.
7.
id | animalID | propID
1  | 1        | 2 (Африка)
2  | 2        | 1 (Южный полюс)
3  | 2        | 3 (Море)
4  | 3        | 3 (Море)
5  | 4        | 1 (Южный полюс)
6  | 4        | 3 (Море)



Количество нужно получить одной строкой (общее кол-во). Должно быть 2 таких животных - пингвин и тюлень.
...
Рейтинг: 0 / 0
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38684676
1) двойной джойн
2) exists/in подзапрос
3) group by + having
...
Рейтинг: 0 / 0
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38684856
wolfandman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх1) двойной джойн
2) exists/in подзапрос
3) group by + having

Вы не могли бы более конкретно объяснить что с чем?
...
Рейтинг: 0 / 0
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38685062
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfandmanДобрый Э - Эх1) двойной джойн
2) exists/in подзапрос
3) group by + having

Вы не могли бы более конкретно объяснить что с чем?

берите третий вариант.
подробней
в доках
group by
haveing
секции запроса
...
Рейтинг: 0 / 0
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38686291
a1eksandr87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй так:

SELECT arials.name,count(relations.id)
FROM arials
JOIN relations ON relations.propID= arials.id
WHERE arials.id IN (1,3)
GROUP BY arials.name
...
Рейтинг: 0 / 0
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38686363
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a1eksandr87,

хэвинг где?
...
Рейтинг: 0 / 0
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38686593
wolfandman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне тут товарищ подсказал:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT count(*) FROM (
         SELECT `animals`.`name` 
         FROM `relations` 
         WHERE `propID` IN (1,3) 
         GROUP BY `animalID` 
         HAVING COUNT(*)=2
) as tmp


Я не подозревал, что можно делать селект по таблице, выбранной в другом селекте.
...
Рейтинг: 0 / 0
Как узнать количество животных, которые живут в море и на Южном полюсе?
    #38686740
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfandmanМне тут товарищ подсказал:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT count(*) FROM (
         SELECT `animals`.`name` 
         FROM `relations` 
         WHERE `propID` IN (1,3) 
         GROUP BY `animalID` 
         HAVING COUNT(*)=2
) as tmp



Я не подозревал, что можно делать селект по таблице, выбранной в другом селекте.надеюсь, пары (animalid,propid) не могут дублироваться?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как узнать количество животных, которые живут в море и на Южном полюсе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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