powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запрос с использованием массива
2 сообщений из 2, страница 1 из 1
Запрос с использованием массива
    #39979813
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую СУБД PostgreSQL.
Для примера, есть таблица
1 столбец - имя владельца
2 столбец - название авто
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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 варианта реализации:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT name
FROM cars
WHERE car =  'BMW'
INTERSECT
SELECT name
FROM cars
WHERE car =  'KIA'



Либо
Код: plsql
1.
2.
3.
4.
5.
SELECT name
FROM cars
WHERE car =  ANY(ARRAY['BMW', 'KIA'])
GROUP BY name
HAVING COUNT(name) = 2



Вопрос, есть ли другие более оптимальные и простые варианты реализации
...
Рейтинг: 0 / 0
Запрос с использованием массива
    #39979920
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11
Использую СУБД PostgreSQL.
Для примера, есть таблица
1 столбец - имя владельца
2 столбец - название авто
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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 варианта реализации:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT name
FROM cars
WHERE car =  'BMW'
INTERSECT
SELECT name
FROM cars
WHERE car =  'KIA'



Либо
Код: plsql
1.
2.
3.
4.
5.
SELECT name
FROM cars
WHERE car =  ANY(ARRAY['BMW', 'KIA'])
GROUP BY name
HAVING COUNT(name) = 2



Вопрос, есть ли другие более оптимальные и простые варианты реализации


второй - самый простой и оптимальный, куда уж проще то.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запрос с использованием массива
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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