Выбрать идентификаторы по условию - MySQL

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Помогите пожалуйста справиться с одной проблемой. Есть две таблицы - company и company_contact. в первой хранятся имена компаний, во второй контактная информация. Выглядит это примерно так:
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
Задача стоит так. Нужно выбрать те компании, которые не имеют адреса. То есть в нашем случае Ernst And Young и Xerox. Если я делаю так:
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'
)

Объяснение кода листинга программы

  1. Код написан на SQL (Structured Query Language), который является стандартным языком запросов к реляционным базам данных.
  2. SELECT * FROM company - выбираются все поля из таблицы company.
  3. WHERE id NOT IN (SELECT company_id FROM company_contact WHERE company_contact = 'address') - выбираются только те строки из таблицы company, у которых значение идентификатора не входит в список идентификаторов из таблицы company_contact, где значение поля company_contact равно 'address'.
  4. В SQL-запросе используется синтаксис сравнения строк с помощью оператора =.
  5. Значение 'address' в скобках является константой (значением), которое сравнивается со значением поля company_contact в таблице company_contact.
  6. Результатом запроса будет набор данных, содержащий только идентификаторы (поле id) из таблицы company, которые не соответствуют условию, указанному в запросе.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.556 из 5