Записи фильтра SQL, которые соответствуют всем записям из другой таблицы - PullRequest
0 голосов
/ 12 октября 2018

Я использую MySQL.Допустим, у меня есть эти две таблицы:

table 1
+---------+
| product |
+---------+
|       1 |
|       2 |
+---------+

table2
+------+---------+
| name | product |
+------+---------+
| A    |       1 |
| A    |       2 |
| B    |       1 |
| B    |       3 |
| C    |       1 |
+------+---------+

, которые создаются с использованием следующего кода:

CREATE TABLE table1(
    product INT
);

CREATE TABLE table2(
    name VARCHAR(10),
    product INT
);

INSERT INTO table1 VALUES(1);
INSERT INTO table1 VALUES(2);

INSERT INTO table2 VALUES('A', 1);
INSERT INTO table2 VALUES('A', 2);
INSERT INTO table2 VALUES('B', 1);
INSERT INTO table2 VALUES('B', 3);
INSERT INTO table2 VALUES('C', 1);

Я хотел бы создать таблицу с именами из table2, для которой его продуктысоответствовать всем продуктам таблицы1.В этом случае просто

+------+
| name |
+------+
| A    |
+------+

Это название магазина, для которого все продукты соответствуют продуктам в другой таблице.

Это, вероятно, что-то простое, что я не вижу.Я пробовал внутренние объединения, используя все с подзапросом, но ...

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

создать таблицу3, затем выполнить следующее

INSERT INTO table3 (name)
SELECT DISTINCT t2.name
FROM table2 t2 
LEFT JOIN table1 t1 on t2.product = t1.product
WHERE t1.product IS NOT NULL
0 голосов
/ 13 октября 2018

Я смог решить эту проблему, используя:

SELECT nome
FROM table2
WHERE product IN (SELECT product FROM table1)
GROUP BY nome HAVING COUNT(*) = (SELECT COUNT(*) FROM table1);

На основе проверить, содержит ли столбец ВСЕ значения другого столбца - Mysql

0 голосов
/ 12 октября 2018

Вы можете использовать join для получения любых совпадений.А затем having, чтобы проверить, что все они есть.

При условии отсутствия дубликатов:

select t2.name
from table2 t2 join
     table1 t1
     using (product)
group by t2.name
having count(*) = (select count(*) from table1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...