如何在访问中加入两个查询

时间:2015-06-01 14:36:07

标签: sql select join union

我无法进行查询,返回结果如下:

表:seriesusuariossiguiendovaloraciones_personales

每张表都有这样的记录:

示例:field1(value)field2(value),...

series(我参考电视节目,我是西班牙语,在这里我们说“serie = tv_show”)

 1. id_serie(1),id_titulo('Sons of anarchy')
 2. id_serie(2),id_titulo('Lost')

usuarios(用户)

 1. id_usuario(1), nick('david')

siguiendo(一个用户跟随一系列)

 1. id_serie(1),id_usuario(1)
 2. id_serie(2),id_usuario(1)

valoraciones_personales(个人评估)

 1. id_serie(1),id_usuario(1),nota(8)

好吧,我想要的是表siguiendo的所有记录的结果,如果该用户重视该系列中的一个,它必须显示分数(nota in spanish),如果该用户没有得分该系列,我想表现出“没有得分”。

我想要的观点:

 *titulo, nota*

 - Sons of anarchy, 8 
 - Lost, without score

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

特别是在 MSACCESS

创建一个名为AllUserSeries

的查询
SELECT 
    U.UserID
    ,U.FullName
    ,S.SeriesID
    ,S.SeriesName
FROM 
   usuarios as U
   ,series  as S

这相当于交叉连接

然后是另一个:

SELECT
   A.FullName
   ,A.SeriesName
   ,Nz(Cstr(R.Score),"Not Rated") as Rating
FROM
   AllUserSeries AS A
   LEFT OUTER JOIN valoraciones_personales AS R
      ON A.UserID = R.UserID
      AND A.SeriesID = R.SeriesID
WHERE
   A.UserID = @UserID

棘手的一点是获取用户可能喜欢的所有系列的列表。为了做到这一点,我会做一个交叉连接以获得可能存在的所有排列,然后使用Nz从那里连接到评级表,以便根据需要处理空值。

*对不起有点组成其他列名称我更容易使用英语希望没关系:D