SQL ACCESS多个FK到相同的表id

时间:2017-06-13 14:21:34

标签: sql ms-access

我正在

  

运行时错误'3061':参数太少。预计1

我的表是:

Libro{
    idLibro
    fromNumber
    toNumber
    control1  > FK Persona
    control2  > FK Persona
}

Persona{
    idPersona
    name
}

尝试了这2种方法但得到了同样的错误

sql= "SELECT L.*, P.nombre as c1, Q.nombre as c2 
     FROM ((Libro L INNER JOIN Persona P ON P.idPersona = L.control1)
     INNER JOIN Persona Q ON Q.idPersona = L.control2)"

sql= "SELECT L.*, P.nombre as c1, Q.nombre as c2 
     FROM Libro L, Persona P, Persona Q 
     WHERE L.control1=P.idPersona AND L.control2=Q.idPersona"

两个表都有这个值:

Libro{
    (1, 100, 150, 1, 3)
    (2, 151, 300, 2, 3)
}

Persona{
    (1, 'Juan')
    (2, 'Mario')
    (3, 'Luis')
}

我希望从Lib​​ro获得注册表中 control1 control2 引用的两个名称

1 个答案:

答案 0 :(得分:0)

您正在别名的表(p和q)没有名为[nombre]的列,因此访问认为它们是参数,因此当您尝试运行它们时可能会提示您输入参数。你使用[name]而不是[nombre]。所以要么改变你的表中的列名,这不是一个坏主意,因为[name]是保留字,或者更改你的查询:

SELECT L.*, P.name, q.name
FROM (Libro AS L INNER JOIN Persona AS P ON L.control1 = P.idPersona) INNER JOIN Persona AS q ON L.control2 = q.idPersona;