SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.02.2017 11:46:19

ОлесяМ
Участник
Зарегистрирован: 17.02.2017
Сообщений: 5

Помощь в составлении запроса

Здравствуйте!
У меня в БД таблица со странами (название, код) и таблица с организациями (код страны, название организации, тип членства).
Нужно составить такой запрос, чтобы найти все организации, не состоящие в ВТО (WTrO).
1.В таблице Организации 225 стран, в таблице Страны 238. Сначала я нашла те, которые не состоят в организациях вообще. Это 13 стран.

2.Из другого запроса я знаю, что в ВТО состоят 150, из них имеют к ней отношение 39 стран.
SELECT DISTINCT NAME FROM ISMEMBER INNER JOIN COUNTRY ON ISMEMBER.COUNTRY = COUNTRY.CODE WHERE ORGANIZATION = 'WTrO' AND TYPE != 'member'; получаю 39 стран, 111

Остается (238-13-39-111) или 75 стран, которые являются членами организаций, но не ВТО
Я пробовала  так:

SELECT DISTINCT NAME FROM ISMEMBER INNER JOIN COUNTRY ON ISMEMBER.COUNTRY = COUNTRY.CODE WHERE ORGANIZATION != 'WTrO'; в итоге получаю список из всех 225 стран этой таблицы

Я поняла, что запрос не подходит, т.к. в таблице коду страны соответствует множество организаций. И если убрать строки с ВТО, с кодом той же страны остаются строки с другими организациями. И страна, которая мне в списке не нужна, туда попадает.
Кто-нибудь знает, как выделить 75 стран из этого списка?

Неактивен

 

#2 17.02.2017 13:07:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помощь в составлении запроса

select name from COUNTRY where code not in (страны, которые не состоят в организациях вообще) and code not in (страны, не состоящие в ВТО);

Неактивен

 

#3 17.02.2017 18:19:25

ОлесяМ
Участник
Зарегистрирован: 17.02.2017
Сообщений: 5

Re: Помощь в составлении запроса

Спасибо!
Но я не очень поняла. После code not in в первом случае я вставлю ISMEMBER (название таблицы Организации), а во втором code not in organization = 'WTrO'? Или по-другому как-то?

Неактивен

 

#4 17.02.2017 18:28:08

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помощь в составлении запроса

если я правильно понял вашу задачу, то в обоих случаях подзапрос из ISMEMBER
но лучше сделайте тестовый пример на десяток строк и покажите какой должен быть результат на этих данных

Неактивен

 

#5 23.02.2017 00:36:37

ОлесяМ
Участник
Зарегистрирован: 17.02.2017
Сообщений: 5

Re: Помощь в составлении запроса

SELECT DISTINCT NAME FROM COUNTRY INNER JOIN ISMEMBER ON COUNTRY.CODE = ISMEMBER.COUNTRY WHERE ORGANIZATION NOT IN ('WTrO'); Здравствуйте! Когда делаю такой запрос, то выдает опять 225 стран - это все члены всех организаций. ISMEMBER название таблицы
mysql> DESCRIBE ISMEMBER;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| Country      | varchar(4)  | NO   | PRI | NULL    |       |
| Organization | varchar(12) | NO   | PRI | NULL    |       |
| Type         | varchar(35) | YES  |     | member  |       |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

Неактивен

 

#6 23.02.2017 00:38:08

ОлесяМ
Участник
Зарегистрирован: 17.02.2017
Сообщений: 5

Re: Помощь в составлении запроса

А это таблица стран


mysql> DESCRIBE COUNTRY;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| Name       | varchar(35) | NO   | UNI | NULL    |       |
| Code       | varchar(4)  | NO   | PRI | NULL    |       |
| Capital    | varchar(35) | YES  |     | NULL    |       |
| Province   | varchar(35) | YES  |     | NULL    |       |
| Area       | float       | YES  |     | NULL    |       |
| Population | int(11)     | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

Неактивен

 

#7 23.02.2017 00:59:37

ОлесяМ
Участник
Зарегистрирован: 17.02.2017
Сообщений: 5

Re: Помощь в составлении запроса

Т.е. Россия состоит в ВТО и Россия состоит в ООН
Россия, которая в строке с ООН попадает в список, а она не должна вообще там быть.

Есть еще варианты решения?)

Неактивен

 

#8 23.02.2017 01:30:43

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помощь в составлении запроса

всё равно не понятно
нужны страны, которые не входят в ВТО, но при этом состоят в каких-то других организация?
или список организаций все члены, которых не состоят в вто?
или что-то другое?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson