Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как узнать количество животных, которые живут в море и на Южном полюсе? / 9 сообщений из 9, страница 1 из 1
30.06.2014, 19:09:46
    #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
30.06.2014, 19:25:13
    #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
01.07.2014, 12:47:28
    #38684676
Как узнать количество животных, которые живут в море и на Южном полюсе?
1) двойной джойн
2) exists/in подзапрос
3) group by + having
...
Рейтинг: 0 / 0
01.07.2014, 15:19:45
    #38684856
wolfandman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество животных, которые живут в море и на Южном полюсе?
Добрый Э - Эх1) двойной джойн
2) exists/in подзапрос
3) group by + having

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

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

берите третий вариант.
подробней
в доках
group by
haveing
секции запроса
...
Рейтинг: 0 / 0
02.07.2014, 23:39:25
    #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
03.07.2014, 05:44:43
    #38686363
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество животных, которые живут в море и на Южном полюсе?
a1eksandr87,

хэвинг где?
...
Рейтинг: 0 / 0
03.07.2014, 11:27:53
    #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
03.07.2014, 12:56:07
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как узнать количество животных, которые живут в море и на Южном полюсе? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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