SQL ВЫБЕРИТЕ несколько ВНУТРЕННИХ СОЕДИНЕНИЙ - PullRequest
5 голосов
/ 13 июня 2010

его База данных доступа ..

у меня есть таблица Library , где Размер темы Autnm Cover Lang - внешние ключи

каждая запись на самом деле является книгой, которая имеет свои свойства, такие как автор и прочее.я не совсем уверен, что я даже использую правильный JOIN .. совершенно новый со "сложным" 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: После вставки предложенных @ Guffa паратезов я получилновая ошибка:

Too few parameters. Expected 3.

Ответы [ 2 ]

15 голосов
/ 13 июня 2010

В Access вам нужны круглые скобки, если у вас более одного объединения.Кроме того, как отметил Ивар, у вас есть лишняя запятая после последнего элемента в списке полей.

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)

Редактировать:

Сообщение об ошибке «Слишком мало параметров».означает, что вы определили параметры в запросе, который не передается при его выполнении.Поскольку вы не используете какие-либо параметры в запросе, это означает, что вы ввели несколько имен в запросе неправильно, поэтому он считает, что они являются параметрами.

2 голосов
/ 13 июня 2010

Я не слишком знаком с Access, и поэтому не уверен, что он это принимает, но я бы начал с удаления последней запятой из списка выбора.

Lang.Lang_English AS [LangEnglish], => Lang.Lang_English AS [LangEnglish]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...