我想知道如何插入第三个数据库(db3),所有在db1和db2中相等的客户端,并且具有与它们相关的外键数量相同。
逻辑上应该是这样的:
插入到db3中。客户端,等于db1中的客户端行。客户机和db2。
where count(db2. purchasesid_client) = count(db2. purchasesid_client)
有两个数据库具有相同的结构。
在每个db中都有这两个表。
- Table 'Client'
+----+-----------------+-----------------+
| id | name | document |
+----+-----------------+-----------------+
- Table 'Purchases'
+----+-----------------+-----------------+
| id | id_client | product |
+----+-----------------+-----------------+
我想知道如何插入第三个数据库(db3),所有在db1和db2中相等的客户端,并且具有与它们相关的外键数量相同。
逻辑上应该是这样的:
插入到db3中。客户端,等于db1中的客户端行。客户机和db2。
您可以使用一组join来选择
db1和db2中的客户端
db1中每个客户端购买的#
db2中具有相同购买#的客户端
然后,您可以简单地使用INSERT语句插入这些选定的行,如下所示:
INSERT INTO db3.clients
SELECT c1.*
FROM db1.clients c1
INNER JOIN db2.clients c2
ON c1.id = c2.id
INNER JOIN
(
SELECT
id_client,
count(*) cnt_purchases
FROM db1.Purchases
GROUP BY id_client
) p1
ON c1.id = p1.id_client
INNER JOIN
(
SELECT
id_client,
count(*) cnt_purchases
FROM db2.Purchases
GROUP BY id_client
) p2
ON p1.id_client = p2.id_client AND p1.cnt_purchases = p2.cnt_purchases;