【问题标题】:SQL SELECT multiple INNER JOINsSQL SELECT 多个 INNER JOIN
【发布时间】:2011-03-03 04:11:52
【问题描述】:

它的访问数据库..

我有一个 Library 表,其中 Autnm Topic Size 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 

编辑:插入@Guffa建议的括号后,我得到一个新错误:

Too few parameters. Expected 3.

【问题讨论】:

  • 您使用的是哪个数据库?

标签: sql ms-access select join reserved-words


【解决方案1】:

在 Access 中,如果您有多个联接,则需要括号。此外,正如 Ivar 指出的那样,在字段列表的最后一项之后,您有一个额外的逗号。

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】:

    我对 Access 不太熟悉,因此不确定它是否接受这一点,但我会先从选择列表中删除最后一个逗号。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 2014-02-24
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多