mysql中如何基于多个表计算一列

mysql中如何基于多个表计算一列,mysql,Mysql,我在多个其他表中有源行和相关项。如何从其他表中获取计算列?计算列将用于源表中的每一行。像 SELECT sources.name as name, COMPUTED_VALUE( first_related_items, second_related_items, third_related_items) as result FROM sources 计算列的派生形式如下 if(value for source row in first

我在多个其他表中有源行和相关项。如何从其他表中获取计算列?计算列将用于源表中的每一行。像

 SELECT 
   sources.name as name, 
   COMPUTED_VALUE(
     first_related_items, 
     second_related_items, 
     third_related_items) as result 
 FROM sources
计算列的派生形式如下

if(value for source row in first table == 0){
     return 0
}
else if(value for source row in second table == 0){
  if(value for source row in third table == 1){
    return 1
  } else {
    return 0
  }
} else if(value for source row in third table != NULL){
    return value for source row in third table
} else {
   return -1
}

您可以联接所有四个表,并将此列计算为
大小写
表达式:

SELECT    s.id,
          CASE WHEN fri.value = 0 THEN 0
               WHEN sri.value = 0 THEN CASE WHEN tri = 1 THEN 1 ELSE 0 END 
               WHEN tri IS NOT NULL THEN tri
               ELSE -1
          END AS computed_value
FROM      sources s
LEFT JOIN first_related_items fri ON fri.source_id = s.id
LEFT JOIN second_related_items sri ON sri.source_id = s.id
LEFT JOIN third_related_items tri ON tri.source_id = s.id

请编辑您的问题并添加示例数据和所需结果。如果没有示例数据,您的伪代码就没有意义。例如,“第一个表中的值”是什么意思?有价值吗?所有的价值观?基于某种用户输入的特定值?您能详细说明第三个表吗?你要空吗?
SELECT    s.id,
          CASE WHEN fri.value = 0 THEN 0
               WHEN sri.value = 0 THEN CASE WHEN tri = 1 THEN 1 ELSE 0 END 
               WHEN tri IS NOT NULL THEN tri
               ELSE -1
          END AS computed_value
FROM      sources s
LEFT JOIN first_related_items fri ON fri.source_id = s.id
LEFT JOIN second_related_items sri ON sri.source_id = s.id
LEFT JOIN third_related_items tri ON tri.source_id = s.id