【问题标题】:Android Sqlite Statement QuestionAndroid Sqlite 语句问题
【发布时间】:2010-08-08 17:19:23
【问题描述】:

假设我有一个数据库,其中包含名为 box、item 和 box_contents 的表,并且我想获取 box_content 表中包含的任何项目(所有项目,但丢弃不在 box_contents 表中的项目)。正确的 sqllite 语法是什么?

【问题讨论】:

  • 注意:这是一个非常基本的 SQL / 查询问题。我建议在继续你的项目之前了解更多关于 SQL / 数据库查询的知识,除非你有一个非常短期的需求。或者,您将头撞在办公桌或 Android 手机上,从而对您的头部或手机造成长期损坏。哪一个都不好。 :)
  • 我对联接相当熟悉,但我知道 Android 不支持正确联接和完全联接。所以我想确保在 Android 中没有特殊的方法可以做到这一点。
  • 根据您的英语问题,Alex Martelli 或我应该是正确的。除非您发布实际代码,否则我认为您不会得到太多帮助。
  • 是的,看起来你们非常感谢,但现在我遇到了“_id 字段不存在”的问题所以看起来查询正在工作,但我假设他们想要 _id 字段两个表都返回了,因为我返回一个并且仍然收到错误。等我弄明白了再告诉大家。

标签: sql android sqlite


【解决方案1】:

取决于您的架构,即您的“box_content”表如何表示它“包含”某个项目。例如,如果它有一个列“ItemId”,它是对“item”表的主键“Id”的外部引用,那么

SELECT item.*
FROM item
JOIN box_content ON (box_content.ItemId = item.Id)

可以正常工作(假设您的意思与您所说的完全一致,即您希望“box_content”表中包含anywhere 的项目,并且您提到的另一个表“box”实际上是完全不相关)。

但是,如果您的架构完全不同(或者您实际想要做的与您所说的完全不同),那么所需的 SQL 当然也会如此。编辑 Q 以显示 CREATE TABLE 语句和(如果需要)任何与它们相邻的 cmets 怎么样?

【讨论】:

    【解决方案2】:

    您需要在两个表之间执行所谓的join

    你会有类似的东西:

    SELECT (item_columns)
    FROM item i JOIN box_contents bc ON i.item_id = bc.item_id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2015-02-02
      • 1970-01-01
      • 2014-09-10
      相关资源
      最近更新 更多