SQL新手 - 不确定如何编写查询

时间:2012-04-26 09:45:16

标签: sql sqlite

我有3张桌子: 单位 类型 派别

单位具有来自类型和派系的外键(TypeID和FactionID)。 我需要使用Types.TypeName和Factions.FactionName获取Units.UnitName。

我想我可能需要加入,但我不确定如何构建它。有什么帮助吗?

编辑:以下是相关表格的屏幕截图:http://i.imgur.com/Il9Qn.png

我需要返回这些数据: UnitName - SupplyCost - CreditsCost - MetalCost - CrystalCost

获取此信息的表单将提供FactionName和TypeName,因为它们是文本值,因此用户可以轻松理解,而不是数字ID。

4 个答案:

答案 0 :(得分:3)

SELECT Units.UnitName
FROM Units INNER JOIN Types ON Units.TypeId = Types.TypeId
    INNER JOIN Factions ON Units.FactionId = Factions.FactionId
WHERE Types.TypeName = @typeName
    AND Factions.FactionName = @factionName

那会是你追求的吗?如果没有,您可能需要在您的问题中提供更多信息。

答案 1 :(得分:3)

类似的东西:

select UnitName, SupplyCost, CreditsCost, MetalCost, CrystalCost from Units
inner join Types on Types.TypeID = Units.TypeID 
inner join Factions on Faction.FactionID = Units.FactionID
WHERE Types.TypeName = @typeName
AND Factions.FactionName = @factionName

答案 2 :(得分:2)

请检查

select UnitName, SupplyCost, CreditsCost, MetalCost, CrystalCost from Units
inner join Types on Types.TypeID = Units.TypeID 
inner join Factions on Faction.FactionID = Units.FactionID
WHERE Types.TypeName = @typeName
AND Factions.FactionName = @factionName

答案 3 :(得分:2)

SELECT
   SupplyCost, CreditsCost, MetalCost, CrystalCost
FROM
   Units 
      INNER JOIN Types ON Units.TypeID = Types.TypeId
      INNER JOIN Factions ON Units.FactionId = Factions.TypeId
WHERE 
      Types.TypeName = 'value from form for types'
      AND
      Factions.FactionName = 'value from form for factions'

您可以阅读http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html以获得对JOIN

的精彩和直观的解释