是否可以从非关系表中获取记录?
在这种情况下,我在表评分上有两条记录。
我想从表评级的idBengkel
获取数据,然后将其添加到表bengkel_likeity的列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 |
+--------+-------------+-------------+-------+-----------------+
答案 0 :(得分:3)
我不知道您为什么会将此视为“非关系”。根据您的数据和期望的结果,我认为您只需要一个join
:
SELECT
bs.idBengkel_1,
bs.idBengkel_2,
r.nilai
bs.nilaiSimilarity,
FROM bengkel_similarity bs
INNER JOIN rating r
ON r.idUser = bs.idBengkel_1
AND r.idBengkel = bs.idBengkel_2
WHERE bs.idBengkel_1 = 1 AND bs.idBengkel_2 IN (7, 10)
答案 1 :(得分:-1)
我了解您的正确答案:
select * from bengkel_similarity , rating where idBengkel = idBengkel_2