-1

我有 3 张桌子。(例如,最初使用了数字,我使用了一些短名称)

  1. 表 1 为 1
  2. 表 2 为 2
  3. 表 3 为 3

block_id 是所有三个表的连接属性

笔记:

  • block_id是唯一的,block_status存在于table1中
  • 表 2 中存在重复的 block_id、thickness_id、no_of_slabs
  • 表 3 中存在重复的 block_id、sub_block_id、p_status

我想显示 block_id、slab 总数、p_status 为各个 block_id 的其中 status='cut'

  • 我们可以通过block_id从表中获取slab的总​​数
  • 如果所有 sub_block_id 的状态都已完成,则 z_status=fullyCompleted 否则部分完成。

我已经尝试了以下查询,但它不起作用,

select 1.block_id,sum(2.noofslabs) as totalslabs,if(3.status='completed','fullyCompleted','partiallyCompleted') from table1 as 1 
left join table2 as 2 on 1.block_id=2.block_id 
left join table3 as 3 on 1.block_id=3.block_id where 1.status='Cut'

如果我不添加table3,totalslabs的结果是正确的,如果我添加join table3,结果是错误的。另一件事是如何让 z_status 部分完成或完全完成

4

1 回答 1

0

您不能使用数字作为表别名。使用以字母开头的名称。

select t1.block_id,sum(t2.noofslabs) as totalslabs,if(t3.status='completed','fullyCompleted','partiallyCompleted') from table1 as t1 
left join table2 as t2 on t1.block_id=t2.block_id 
left join table3 as t3 on t1.block_id=t3.block_id where t1.status='Cut'

应该管用

于 2013-06-06T10:24:39.960 回答