【问题标题】:How should I JOIN my tables?我应该如何加入我的表?
【发布时间】:2013-11-29 14:48:38
【问题描述】:

我正在学习 C# 和一些 SQL 服务器,现在我正在尝试从我的小型数据库中获取信息。

我有两个表:MovieMovieHandler

在电影表中,我有MovieCodeLable,这是一个唯一编号,以及电影的Title

在 MovieHandler 表中,我有 MovieCodeLable,这与我的 Movie 表中的相同,我还有她的列 InStore,它是八位 0 或 1,表示不在商店或商店中。

我正在尝试显示不在商店中的电影的标题。但我发现很难弄清楚如何加入表格。

我试过这个 SQL 查询:

SELECT        Title
FROM          Movie
JOIN          MovieCodeLable
ON            MovieHandler.MovieCodeLable
WHERE         InStore = 0

由于我只在 Visual Studio 2012 中尝试此查询时遇到错误,我可能错过了一些关于 SQL 和 JOINS 的基本知识,但我希望有人可以让 JOINS 对我和其他人来说像黄油一样顺畅,努力学习它。

【问题讨论】:

  • 您的ON 条件不完整。

标签: sql sql-server sql-server-2008 join


【解决方案1】:

您的 JOIN 错误,您的 ON 子句不完整。 JOIN 应该涉及您要加入的 2 个表的名称,在这种情况下是 Movie 和 MovieHandler ON 应该是格式 A =​​ B 的表达式。所以您的查询应该是:

SELECT        Title
FROM          Movie
JOIN          MovieHandler
ON            Movie.MovieCodeLable = MovieHandler.MovieCodeLable
WHERE         InStore = 0

【讨论】:

  • 感谢您对我的问题的这个令人满意的回答和解决方案,谢谢!
  • 我只是在等待 Stackoverflow 让我... :)
  • 但是,Visul Studio 将我的查询(自动)更改为 INNER JOIN
  • INNER JOIN 是一个更严格的版本,即它只会检索在匹配字段的连接中存在于两个表中的那些记录。我认为明确提及 INNER JOIN 是最佳实践,但我不确定这是 VS 这样做的唯一原因。
  • 由于有许多种连接,每种都有不同的行为,最好总是明确说明正在使用的连接,而不是试图记住默认的连接。恕我直言,未指定连接类型的 JOIN 应视为错误。
【解决方案2】:

您需要指定两个 JOIN 字段

SELECT        Title
FROM          Movie
JOIN          MovieHandler
ON            Movie.MovieCodeLable = MovieHandler.MovieCodeLable
WHERE         InStore = 0

【讨论】:

  • 应该是 MovieHandler ON,而不是 MovieCodeLable ON,否则它可以工作!谢谢。
  • 第二个表叫做MovieHandler。这不能工作,因为 MovieCodeLable 是一个字段,而不是表。
  • 更正了,我只是复制粘贴了你的,专注于ON 部分而不是JOIN 部分。
【解决方案3】:

你必须这样查询

SELECT        Title
FROM          Movie
JOIN          MovieHandler
ON            Movie.MovieCodeLable = MovieHandler.MovieCodeLable
WHERE         InStore = 0

您必须完成 ON 条件。您需要在 ON 条件后指定要匹配的列。转到此链接有表格说明 http://www.w3schools.com/sql/sql_join.asp

【讨论】:

  • 没有名为 MovieCodeLable 的表
  • 现在可以了吗@Mauricio
【解决方案4】:

我在 oracle 中就是这样做的。不确定它是否适合您...

试试:

Select Mv.Title 
      ,other_columns
  from Movie        Mv
      ,MovieHandler Mvh
 Where Mv.MovieCodeLable = Mvh.MovieCodeLable
   and (whatever other criteria you want

只要 MovieCodeLable 是唯一的就可以了

Other_columns 可以是具有 table.column 语法的任一表格格式的任何列(我使用表格快捷方式 Mv 和 Mvh 来引用表格,我不知道这对于非 oracle 是否合法)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 2016-08-03
    • 1970-01-01
    • 2021-07-03
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多