SQL SELECT multiple INNER JOINs

23,815

Solution 1

In Access you need parentheses if you have more than one join. Also, as Ivar pointed out, you have an extra comma after the last item in the field list.

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)

Edit:

The error message "Too few parameters." means that you have defined parameters in the query that is not sent along when it's executed. As you don't use any parameters in the query it means that you have spelled some names in the query wrong, so that it thinks that they are parameters instead.

Solution 2

I'm not too familiar with Access, and therefore not sure if it accepts this, but I would start by removing the last comma from the select list.

Lang.Lang_English AS [LangEnglish], => Lang.Lang_English AS [LangEnglish]
Share:
23,815
HICHAM ASBIKA
Author by

HICHAM ASBIKA

Got tired with the breeze of fresh air in my bio ;)

Updated on June 11, 2020

Comments

  • HICHAM ASBIKA
    HICHAM ASBIKA almost 4 years

    its Access database..

    i have a Library table, where Autnm Topic Size Cover Lang are foreign keys

    each record is actually a book which has its properties such as author and stuff. i am not quite sure i am even using the correct JOIN.. quite new with "complex" SQL :)

    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 
    

    Edit: After inserting the parantheses @Guffa suggested, I got a new error:

    Too few parameters. Expected 3.