Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 然后在选择的情况下使用条件视图来构建视图_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql 然后在选择的情况下使用条件视图来构建视图

Mysql 然后在选择的情况下使用条件视图来构建视图,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我正在尝试构建一个链接多个表的视图 它是一个事件时间表列表。这个项目的一个特点是有一个带有ID和NAME列的Companys表 如果mainSubcategory是217,那么我只想使用companys.name。这很有效 如果Main子类别为216,我需要: 从company\u event\u关联的\u companys中获取company\u id,其中company\u id=companys.main子类别 使用该公司id以companys.name填充该记录的bands列,其中com

我正在尝试构建一个链接多个表的视图

它是一个事件时间表列表。这个项目的一个特点是有一个带有ID和NAME列的Companys表

  • 如果mainSubcategory是217,那么我只想使用companys.name。这很有效
  • 如果Main子类别为216,我需要:

    从company\u event\u关联的\u companys中获取company\u id,其中company\u id=companys.main子类别

    使用该公司id以companys.name填充该记录的bands列,其中companys.id=company\u event\u associated\u companys.company\u id

  • SQL代码:

    CREATE OR REPLACE VIEW v_events_7 AS
        SELECT company_events.id, 
               companies.city, 
               company_events.start_date, 
               company_events.start_time,
               company_event_associated_companies.company_id,
               CASE
                   WHEN companies.mainSubcategory = '217'
                       THEN companies.name 
                   WHEN companies.mainSubcategory = '216'
                       THEN companies.name /*This is where I need the name as described above*/
               END Band
        FROM `company_events`
    
    更新-下面的代码与Panjak在回答中提供的代码略有不同。我得把那辆车挪动一下

    (CASE
    WHEN 
      companies.mainSubcategory = '217'
    THEN
      companies.name 
    WHEN
      companies.mainSubcategory = '216') AND
      companies.id = company_event_associated_companies.company_id)
    
    THEN
    (SELECT companies.name  FROM companies WHERE 
             companies.id = '332')
    END ) AS 'Band'
    
    注意-我将companys.id硬连线到332,但我确信当我使用实际的company id提取字段时,它会工作

    请尝试此查询:


    非常感谢。我做了一个小的修改,作为更新添加到原始问题中。你让我走对了方向!
    CREATE OR REPLACE VIEW v_events_7 AS
    SELECT company_events.id, 
           companies.city, 
           company_events.start_date, 
           company_events.start_time,
           company_event_associated_companies.company_id,
           (CASE WHEN companies.mainSubcategory = '217'
               THEN companies.name 
               WHEN companies.mainSubcategory = '216'
               THEN companies.name
               ELSE (SELECT columnName FROM tableName WHERE 
             companies.mainSubcategory = 'YourData'
     /*This is where I need the name as described above*/ 
       END END) Band
       FROM `company_events`