Pregunta SQL SELECT multiple INNER JOINs


sus Acceso a la base de datos..

tengo un Biblioteca mesa, donde Autnm Topic Size Cover Lang son llaves extranjeras 

cada registro es en realidad un libro que tiene sus propiedades como autor y demás. No estoy muy seguro de que esté usando el JOIN correcto ... bastante nuevo con SQL "complejo" :)

SELECT Library.Bknm_Hebrew, Library.Bknm_English, Library.Bknm_Russian, Library.Note,
       Library.ISBN, Library.Pages, Library.PUSD, Author.ID AS [AuthorID],
       Author.Author_hebrew AS [AuthorHebrew],
       Author.Author_English AS [AuthorEnglish],
       Author.Author_Russian AS [AuthorRussian], Topic.ID AS [TopicID],
       Topic.Topic_Hebrew AS [TopicHebrew], Topic.Topic_English AS [TopicEnglish],
       Topic.Topic_Russian AS [TopicRussian], Size.Size AS [Size],
       Cover.ID AS [CoverID], Cover.Cvrtyp_Hebrew AS [CoverHebrew],
       Cover.Cvrtyp_English AS [CoverEnglish], Cover.Cvrtyp_Russian AS [CoverRussian],
       Lang.ID AS [LangID], Lang.Lang_Hebrew AS [LangHebrew],
       Lang.Lang_English AS [LangEnglish],

FROM Library INNER JOIN Author ON Library.Autnm = Author.ID
                 INNER JOIN Topic ON Library.Topic = Topic.ID
                 INNER JOIN Size ON Library.Size = Size.ID
                 INNER JOIN Cover ON Library.Cover = Cover.ID
                 INNER JOIN Lang ON Library.Lang = Lang.ID
WHERE (TopicID=13 AND LangID=1) ORDER BY LangID ASC 

Editar:  Después de insertar las parantheses sugeridas por @Guffa, recibí un nuevo error:

Too few parameters. Expected 3.


5
2018-06-13 08:33


origen


Respuestas:


En Access necesita paréntesis si tiene más de una unión. Además, como señaló Ivar, tiene una coma adicional después del último elemento en la lista de campos.

select
  Library.Bknm_Hebrew, Library.Bknm_English, Library.Bknm_Russian, Library.Note,
  Library.ISBN, Library.Pages, Library.PUSD, Author.ID as [AuthorID],
  Author.Author_hebrew as [AuthorHebrew], Author.Author_English as [AuthorEnglish],
  Author.Author_Russian as [AuthorRussian], Topic.ID as [TopicID],
  Topic.Topic_Hebrew as [TopicHebrew],  Topic.Topic_English as [TopicEnglish],
  Topic.Topic_Russian as [TopicRussian], Size.Size as [Size], Cover.ID as [CoverID],
  Cover.Cvrtyp_Hebrew as [CoverHebrew], Cover.Cvrtyp_English as [CoverEnglish],
  Cover.Cvrtyp_Russian as [CoverRussian], Lang.ID as [LangID],
  Lang.Lang_Hebrew as [LangHebrew], Lang.Lang_English as [LangEnglish]  
from
  (((((Library
  inner join Author on Library.Autnm = Author.ID)
  inner join Topic on Library.Topic = Topic.ID)
  inner join Size on Library.Size  = Size.ID)
  inner join Cover on Library.Cover = Cover.ID)
  inner join Lang on Library.Lang  = Lang.ID)

Editar:

El mensaje de error "Muy pocos parámetros". significa que tiene parámetros definidos en la consulta que no se envían cuando se ejecuta. Como no usa ningún parámetro en la consulta, significa que ha escrito mal algunos nombres en la consulta, de modo que cree que son parámetros en su lugar.


15
2018-06-13 08:57



No estoy muy familiarizado con Access y, por lo tanto, no estoy seguro si acepta esto, pero comenzaría eliminando la última coma de la lista de selección.

Lang.Lang_English AS [LangEnglish], => Lang.Lang_English AS [LangEnglish]

2
2018-06-13 08:42