【问题标题】:SQL Three Table JoinsSQL 三表连接
【发布时间】:2018-08-01 19:26:18
【问题描述】:

我正在尝试使用我必须从数据库中查询的 3 个表来编写一些代码,以下是它的布局方式:

TableA (ID, Number, Name, etc.)

TableB (ID, Order, TableA_ID, etc.)

TableC (ID, Order, Action, Device, TableB_ID, etc.) 

现在我需要值(TableB.Order、TableC.Order、TableC.Action、TableC.Device

这些值由用户输入确定,用户输入将采用 TableA.Number 的值(具有唯一 ID TableA.ID)。

Query = 
("SELECT TableB.Order, TableC.Order, 
         TableC.Action, TableC.Device  
    FROM TableC  
   INNER JOIN TableB  
      ON TableB.Id = TableC.TableB_Id  
   INNER JOIN TableA  
      ON TableA.Id = TableB.TableA_Id  
   WHERE TableA.Number  
    LIKE "USER INPUT") 

mycursor.execute(query)  
data = mycursor.fetchall()

寻找任何提示。

【问题讨论】:

  • 你检查我的答案了吗?
  • “[Microsoft][ODBC SQL Server Driver][SQL Server]关键字‘Order’附近的语法不正确。”我在运行您的建议时收到此错误。
  • 只是为了确定一件事,您可以通过从选择中删除 TableC.Order 来检查吗?
  • 通过取出 TableB.Order 和 TableC.Order 我能够在 python 控制台上获得输出
  • 请不要同时取出两个,用一个来理解问题。

标签: sql sql-server inner-join


【解决方案1】:

查询应该像下面这样写:

SELECT TableB.[Order] as TableB_Order, TableC.[Order] as TableC_Order, 
TableC.Action, TableC.Device
FROM TableA
INNER JOIN TableB ON TableA.Id = TableB.TableA_ID
INNER JOIN TableC ON TableB.Id = TableC.TableB_ID
WHERE TableA.Number LIKE '%USER INPUT%'

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
相关资源
最近更新 更多