Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2020, 11:32   #1
polin11
Форумчанин
 
Регистрация: 07.06.2015
Сообщений: 164
По умолчанию СУБД PostgreSQL. Запрос с использованием массива

Использую СУБД PostgreSQL.
Для примера, есть таблица
1 столбец - имя владельца
2 столбец - название авто
Код:
CREATE TABLE cars (
  id INT NOT NULL,
  name VARCHAR(30) NOT NULL,
  car VARCHAR(30)
);

INSERT INTO cars 
    (id, name, car) 
VALUES 
    (1,'John', 'BMW'),
    (2,'Mike', 'BMW'),
    (3,'John', 'OPEL'),
    (3,'John', 'KIA')
Есть набор названий авто ['BMW', 'KIA'], нужно найти владельцев, которые владели всеми этими авто.
Придумал 2 варианта реализации:
Код:
SELECT name
FROM cars
WHERE car =  'BMW'
INTERSECT
SELECT name
FROM cars
WHERE car =  'KIA'
Либо
Код:
SELECT name
FROM cars
WHERE car =  ANY(ARRAY['BMW', 'KIA'])
GROUP BY name
HAVING COUNT(name) = 2
Вопрос, есть ли другие более оптимальные и простые варианты реализации
polin11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное средство "Деканат" (Работа с базой данных на языке С#/C++. СУБД : postgreSQL) bazinga93 Фриланс 2 06.10.2014 16:39
C# или СУБД PostgreSQL кому лучше "отдать" вычисления? alextrof94 C# (си шарп) 4 04.08.2014 10:34