【问题标题】:sqlite join query iPadsqlite join 查询 iPad
【发布时间】:2017-01-31 21:20:45
【问题描述】:

我有三张桌子

Personal_video
+------------------------------+ 
 |presonal_video_id | title | 
  ----------------------------
       1            |  test1| 
       2            |  test2| 
       3            |  test3| 
       4            |  test4| 

personal_video_tags
+------------------------------+ 
     |tag_id |       tag_title | 
  ----------------------------
       1            |  august| 
       2            |  2016  | 
       3            |  2015  | 
       4            |  2014  | 


personal_video_tag_mapping
+------------------------------+ 
     |tag_id |       presonal_video_id | 
  ----------------------------
       1            |  1  | 
       2            |  2  | 
       3            |  3  | 
       4            |  1  | 

现在我想编写一个查询,它将根据常见标签返回视频,例如如果用户选择标签“August”和“2014”,那么查询应该返回连接到两个标签的视频。

目前我的查询是

 SELECT presonal_video_id,title 
 FROM personal_video 
 WHERE presonal_video_id IN 
 (
    SELECT personal_video_id AS PID 
    FROM personal_video_tag_mapping 
    WHERE tag_id IN ("1","2")  AND privacy_level != 2   
    GROUP BY personal_video_id 
    HAVING COUNT( PID ) > 1 
 )

它给了我写结果,但是当有大数据时,它需要很长时间。谁能告诉我写这个查询的正确方法

提前谢谢你

【问题讨论】:

    标签: ios sql swift sqlite


    【解决方案1】:

    试试这个查询:

    SELECT t1.presonal_video_id, t1.title 
    FROM personal_video AS t1
    JOIN personal_video_tag_mapping AS t2 
        ON t1.presonal_video_id = t2.presonal_video_id
    JOIN personal_video_tags AS t3
        ON t2.tag_id = t3.tag_id    
    WHERE t3.tag_title IN ('august', '2014')
    GROUP BY t1.presonal_video_id, t1.title 
    HAVING COUNT(*) = 2
    

    【讨论】:

    • 感谢您的回复,此查询运行良好,但不幸的是它显示的结果较少,这意味着我的查询给了我 33 个结果,但您的查询给了我 7 个结果。我正在尝试解决问题
    • Hay Giorgos 我将 COUNT() = 2 更改为 COUNT() > 1,现在它工作正常。感谢您的帮助
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2011-09-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2013-11-13
    相关资源
    最近更新 更多