【问题标题】:JOIN in SQLITE on iphone在 iPhone 上加入 SQLITE
【发布时间】:2011-03-09 17:12:54
【问题描述】:

我有一个 SQLite 请求要做,但我不知道该怎么做。

这里是:

SELECT videoid,inappid FROM store,video 
WHERE store.paid='1' AND store.checked='1' 
AND video.inappid=store.inappid AND video.download =='0' 
ORDER BY video.inappid DESC,video.videoid;

--> SQL ERROR 答案:DB Error: 1 "ambiguous column name: inappid"

我解释一下:store 和 video 是两张表。 在商店中,有“inappid”(com.mysite.myapp.000)引用的产品。 'inappid' 列名是表中的键并且是唯一的。在 store 表中支付和检查只是布尔值。

在视频中,有...视频,每个视频都有一个唯一的键“videoid”。一个“inappid”列,它引用存储表中的 inappid。

所以我的要求是:在商店表中选择我所有已付款和检查为 TRUE 的元素的 inappid 参数,然后在尚未下载此视频的视频表中选择我所有具有此 inappid 的视频的 videoid。

我知道我必须使用 JOIN 和 ON 元素,但我不知道如何

请帮忙哦。

【问题讨论】:

    标签: iphone sqlite select join request


    【解决方案1】:

    因为两个表都包含一个列inappid,所以当你说SELECT videoid,inappid FROM ...时它不知道你要返回哪一个。

    一个简单的解决方案是直接选择一个:SELECT videoid,video.inappid FROM ...

    另一种解决方案是使用 JOIN 和 USING 进行连接,在这种情况下,它会知道两个表中的“inappid”列是等价的:SELECT videoid,inappid FROM store JOIN video USING(inappid) WHERE store.paid='1' AND store.checked='1' AND video.download =='0' ORDER BY video.inappid DESC,video.videoid

    【讨论】:

      【解决方案2】:
      SELECT store.videoid, video.inappid FROM store,video 
      WHERE store.paid='1' AND store.checked='1' 
      AND video.inappid=store.inappid AND video.download =='0' 
      ORDER BY video.inappid DESC,video.videoid;
      

      也许?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 2011-01-27
        • 2014-08-25
        • 1970-01-01
        • 2020-06-01
        • 2010-12-03
        • 2011-06-10
        相关资源
        最近更新 更多