SELECT
firstTable.Product,
firstTable.geographies
FROM
(
SELECT
Product,
REPLACE(GROUP_CONCAT(Geography),' ','') AS geographies
FROM T1
GROUP BY Product) firstTable
INNER JOIN
(
SELECT
Product,
REPLACE(Geography,' ','') AS geographies
FROM T2) secondTable
ON firstTable.Product = secondTable.Product
WHERE firstTable.geographies = secondTable.geographies;
Примечание: Я заменил пространства, используя REPLACE
функцию только для обеспечения двух запросы из двух таблиц генерируют одну и ту же строку
SQL FIDDLE DEMO
TEST (Если вы не можете получить доступ к sqlfiddle):
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Product` varchar(50) CHARACTER SET utf8 NOT NULL,
`Geography` varchar(100) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`ID`)
);
INSERT INTO `t1` VALUES ('1', 'P1', 'G1');
INSERT INTO `t1` VALUES ('2', 'P2', 'G1');
INSERT INTO `t1` VALUES ('3', 'P2', 'G2');
DROP TABLE IF EXISTS `t2`;
CREATE TABLE `t2` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Product` varchar(50) CHARACTER SET utf8 NOT NULL,
`Geography` varchar(100) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`ID`)
);
INSERT INTO `t2` VALUES ('1', 'P1', 'G1, G2');
INSERT INTO `t2` VALUES ('2', 'P2', 'G1, G2');
Запуск выше запрос по этому тестовых данных вы получите выход, как показано ниже:
Product geographies
P2 G1,G2
может быть 'Сепаратор '' 'должен использовать из-за пробела между значениями? – mitkosoft
@mitkosoft Не удалось поймать это, спасибо – Mihai
Последовательность географов в T2 не фиксирована, это могут быть 'G2, G1' или' G1, G3, G2'. Поэтому я не думаю, что ORDER BY в group_concat будет работать для меня. –