【问题标题】:How To Select All Rows In A Table By Querying Data In Another Table如何通过查询另一个表中的数据来选择一个表中的所有行
【发布时间】:2021-04-13 20:08:12
【问题描述】:

我有 3 个 SQLite 表,必须查询这些表才能获得最终数据。

我必须选择 ItemAppearance 中的所有内容,其中 DisplayType == 4
然后从 ID 字段中取出相应的数字并
选择 ItemModifiedAppearance 中的所有行,其中 ItemAppearanceID == 上一个编号
然后取对应编号的ItemID字段和
选择 ItemSearchName 中的所有行,其中 ID == 上一个编号
最后,我可以检索我需要的所有 Display_lang 值的大型列表。

图形化:

获取此字符串列表的最佳/最快/最有效方法是什么?

【问题讨论】:

  • 除了图片上方的段落,我不知道如何用文字表达。对不起蒂姆。这是一个单一的图像。不是图片。
  • 您包含的图片并不能真正帮助您解决问题。请删除它们,并将示例数据作为文本包含在您的问题中涉及的所有表格中。
  • @Selzier 。 . . MySQL SQLite。仅标记您真正使用的数据库。

标签: sql database sqlite optimization


【解决方案1】:

您的问题有点令人困惑,但我猜这里join 是您的朋友:

SELECT *
FROM ItemAppearance ia LEFT JOIN 
     ItemModifiedAppearance im
     ON ia.ID==im.ItemAppearanceID JOIN
     ItemSearchName isn
     ON ia.ID==isn.ID
WHERE ia.DisplayType = 4;

这样就可以获得所有 3 个数据库,其中所有 id 都匹配,但只有 ItemAppearance 中的那些是 DataType 4.

希望这会有所帮助,或者有意义,或者甚至在您的问题的范围内。告诉我。

【讨论】:

    【解决方案2】:

    我写了这个解决方案,如果有更优化的方法可以实现,请告诉我:

    SELECT  itemsearchname.ID, itemsearchname.Display_lang, itemappearance.DisplayType
    FROM ((itemappearance
    INNER JOIN itemmodifiedappearance ON itemappearance.ID = itemmodifiedappearance.ItemAppearanceID)
    INNER JOIN itemsearchname ON itemmodifiedappearance.ItemID = itemsearchname.ID)
    WHERE DisplayType == 4;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2014-10-22
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多