Выбрать идентификаторы по условию - MySQL
Формулировка задачи:
Здравствуйте. Помогите пожалуйста справиться с одной проблемой.
Есть две таблицы - company и company_contact.
в первой хранятся имена компаний, во второй контактная информация. Выглядит это примерно так:
Задача стоит так. Нужно выбрать те компании, которые не имеют адреса. То есть в нашем случае Ernst And Young и Xerox.
Если я делаю так:
То в выборку попадают все компании. Ну в принципе понятно почему. Как решить проблему?
Заранее спасибо!
Листинг программы
- company
- -------------------------------------------
- id Name
- -------------------------------------------
- 1 McDonalds
- 2 Ernst And Young
- 3 Xerox
- company_contact
- ------------------------------------------
- id company_id type value
- ------------------------------------------
- 1 1 address Sonne street 9
- 2 1 phone 09885-521-47
- 3 1 email removed@mail.ru
- 4 2 phone 0222147
- 5 3 phone 0985541
- 6 3 email removed@mail.ru
Листинг программы
- SELECT *
- FROM company
- WHERE id IN (
- SELECT company_id
- FROM company_contact
- WHERE company_contact <> 'address'
- )
Решение задачи: «Выбрать идентификаторы по условию»
textual
Листинг программы
- SELECT *
- FROM company
- WHERE id NOT IN
- (
- SELECT company_id
- FROM company_contact
- WHERE company_contact = 'address'
- )
Объяснение кода листинга программы
- Код написан на SQL (Structured Query Language), который является стандартным языком запросов к реляционным базам данных.
- SELECT * FROM company - выбираются все поля из таблицы
company
. - WHERE id NOT IN (SELECT company_id FROM company_contact WHERE company_contact = 'address') - выбираются только те строки из таблицы
company
, у которых значение идентификатора не входит в список идентификаторов из таблицыcompany_contact
, где значение поляcompany_contact
равно 'address'. - В SQL-запросе используется синтаксис сравнения строк с помощью оператора
=
. - Значение 'address' в скобках является константой (значением), которое сравнивается со значением поля
company_contact
в таблицеcompany_contact
. - Результатом запроса будет набор данных, содержащий только идентификаторы (поле
id
) из таблицыcompany
, которые не соответствуют условию, указанному в запросе.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д