【发布时间】:2020-08-05 22:00:34
【问题描述】:
是否可以从非关系表中获取记录?
在这种情况下,我有两条关于表评分的记录。
我想从idBengkel 获取有关表评分的数据,然后将它们添加到表 bengkel_similarity 上的 idBengkel_2 列中。
注意:
idUser列产生了多少条记录。因此,记录数必须在所有表上匹配。而且 idUser 和 idBengkel_1 不一样。
这是我的桌子:
bengkel_similarity
SELECT idBengkel_1, idBengkel_2, nilaiSimilarity
FROM bengkel_similarity
WHERE idBengkel_1 = 1 AND idBengkel_2 = 7
OR idBengkel_1 = 1 AND idBengkel_2 = 10
评分
SELECT idUser, idBengkel, nilai
FROM rating
WHERE idUser = 1
这里是所有表的结果:
bengkel_similarity的结果
+-------------+-------------+-----------------+
| idBengkel_1 | idBengkel_2 | nilaiSimilarity |
+-------------+-------------+-----------------+
| 1 | 7 | -0.1692 |
| 1 | 10 | 0 |
+-------------+-------------+-----------------+
评分结果
+--------+-----------+-------+
| idUser | idBengkel | nilai |
+--------+-----------+-------+
| 1 | 7 | 4 |
| 1 | 10 | 5 |
+--------+-----------+-------+
这就是我想要的:
+--------+-------------+-------------+-------+-----------------+
| idUser | idBengkel_1 | idBengkel_2 | nilai | nilaiSimilarity |
+--------+-------------+-------------+-------+-----------------+
| 1 | 1 | 7| 4| -0.1692 |
| 1 | 1 | 10| 5| 0 |
+--------+-------------+-------------+-------+-----------------+
【问题讨论】:
-
但它们不相关。那个问题。您必须拥有相同数量的行并位于正确的位置,否则您不能。如果它们确实有相同数量的行并且结果完全对齐,那么您可以执行两个查询,然后基于两个单独的提取连接结果数组,但是您必须使用您的服务器语言,例如 PHP。
-
我在服务器端使用 codeigniter 4。但我认为需要更多时间来解决问题。如果没有解决方案我会尝试。
-
FK 和其他约束不参与查询。它们可以防止无效更新。
标签: mysql sql join non-relational-database