MySQL-如何从没有关系的表中选择记录

时间:2020-08-05 22:00:34

标签: mysql sql join non-relational-database

是否可以从非关系表中获取记录?
在这种情况下,我在表评分上有两条记录。

我想从表评级的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 |
+--------+-------------+-------------+-------+-----------------+

2 个答案:

答案 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