代码之家  ›  专栏  ›  技术社区  ›  margherita pizza

当内部连接涉及到

  •  0
  • margherita pizza  · 技术社区  · 6 年前

    我正在开发一个旅游应用程序的项目。某些项作为添加到系统中 广告(酒店、夜总会)和一些项目作为有用信息添加(海滩、国家公园)

    我有一张叫做“物品”的桌子。

    项目

    id | category_id | name                | is_payment 
    1  | 1           | hotel califonia     | 1          
    2  | 1           | hotel hilton        | 1          
    3  | 2           | Yala national park  | 0          
    4  | 2           | Kumana national park| 0        
    

    这里,category_id指的是categories表。

    类别

    id | name           | type
    1  | Hotels         | commercial
    2  | National parks | non-commercial
    

    我要从项目表中选择所有项目。

    但如果这是一个商业项目,我需要检查是否付款之前,显示给最终用户。

    到目前为止,我什么都不用展示。 我认为case函数和if函数也是一样的。但我不知道如何将这些与本案例研究联系起来。 我不知道该怎么做。

    任何帮助! 谢谢你的好意!

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jay Shankar Gupta    6 年前

    我下面的问题是,你可以我采取的所有非商业项目,如果是商业,那么我正在检查付款也完成使用和运营商。

    SELECT i.*
    FROM items i
    JOIN categories c 
    ON i.category_id = c.id
    WHERE c.type != 'commercial' 
    OR (c.type = 'commercial' AND i.is_payment = 1)
    
        2
  •  0
  •   jithin giri    6 年前

    如果您要查找除上述答案以外的其他查询…

    select a.* from items a join categories b on a.category_id=b.id and b.type='commercial' and a.is_payment=1
    union all
    select a.* from items a join categories b on a.category_id=b.id and b.type<>'commercial';