关于SQl语句的问题 求大神解答

紫九 2013-12-10 10:16:19
select Applicant_name,HEAD_name,SIGN_name from
(
select hum_list.first_name Applicant_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Applicant
union all
select hum_list.first_name HEAD_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.HEAD
union all
select hum_list.first_name SIGN_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Sign
)

运行报错:"SIGN_name"标识符无效
select * from
(
select hum_list.first_name Applicant_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Applicant
union all
select hum_list.first_name HEAD_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.HEAD
union all
select hum_list.first_name SIGN_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Sign
)
运行无错误 但是我需要Applicant_name,HEAD_name,SIGN_name 三个字段 运行结果只有Applicant_name一个字段
请教各大神应该怎么改
...全文
192 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫九 2013-12-10
  • 打赏
  • 举报
回复
谢谢了 刚搞完就看到了一样的东西
紫九 2013-12-10
  • 打赏
  • 举报
回复
差不多搞定了 select b.first_name as Applicant_name, c.first_name as HEAD_name, d.first_name as Sign_name from s_zhgl_Send_meal a inner join hum_list b on b.human_id=a.Applicant inner join hum_list c on c.human_id=a.HEAD inner join hum_list d on d.human_id=a.Sign 谢谢各位提供的思路
Yole 2013-12-10
  • 打赏
  • 举报
回复
引用 12 楼 u012526879 的回复:
[quote=引用 10 楼 u010192842 的回复:]

select b.Applicant_name, c.HEAD_name, d.SIGN_name 

from  s_zhgl_Send_meal a left join 

hum_list b on b.human_id=a.Applicant left join 

hum_list c on c.human_id=a.HEAD  left join 

hum_list d on c.human_id=a.Sign  

不该用union all 的,之前没指细看!
select b.Applicant_name, c.HEAD_name, d.SIGN_name from s_zhgl_Send_meal a left join hum_list b on b.human_id=a.Applicant left join hum_list c on c.human_id=a.HEAD left join hum_list d on d.human_id=a.Sign 这个还是不行 ORA-00904:"D"."SIGN_name"标识符无效 b.Applicant_name, c.HEAD_name, d.SIGN_name 都是无效的标识符 好无奈啊[/quote] b.xxx as Applicant_name, c.xxx as HEAD_name,d.xxx as SIGN_name xxx 是你hum_list表中名字那个字段
紫九 2013-12-10
  • 打赏
  • 举报
回复
引用 10 楼 u010192842 的回复:

select b.Applicant_name, c.HEAD_name, d.SIGN_name 

from  s_zhgl_Send_meal a left join 

hum_list b on b.human_id=a.Applicant left join 

hum_list c on c.human_id=a.HEAD  left join 

hum_list d on c.human_id=a.Sign  

不该用union all 的,之前没指细看!
select b.Applicant_name, c.HEAD_name, d.SIGN_name from s_zhgl_Send_meal a left join hum_list b on b.human_id=a.Applicant left join hum_list c on c.human_id=a.HEAD left join hum_list d on d.human_id=a.Sign 这个还是不行 ORA-00904:"D"."SIGN_name"标识符无效 b.Applicant_name, c.HEAD_name, d.SIGN_name 都是无效的标识符 好无奈啊
紫九 2013-12-10
  • 打赏
  • 举报
回复
引用 9 楼 liuchaolin 的回复:
首先要了解union all的用途 union all==> hum_list.first_name hum_list.first_name hum_list.first_name 并不是 hum_list.first_name,hum_list.first_name,hum_list.first_name
那应该怎么改? 我是初学者
Yole 2013-12-10
  • 打赏
  • 举报
回复

select b.Applicant_name, c.HEAD_name, d.SIGN_name 

from  s_zhgl_Send_meal a left join 

hum_list b on b.human_id=a.Applicant left join 

hum_list c on c.human_id=a.HEAD  left join 

hum_list d on c.human_id=a.Sign  

不该用union all 的,之前没指细看!
md5e 2013-12-10
  • 打赏
  • 举报
回复
首先要了解union all的用途 union all==> hum_list.first_name hum_list.first_name hum_list.first_name 并不是 hum_list.first_name,hum_list.first_name,hum_list.first_name
紫九 2013-12-10
  • 打赏
  • 举报
回复
不行 和 select * from ( select hum_list.first_name Applicant_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Applicant union all select hum_list.first_name HEAD_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.HEAD union all select hum_list.first_name SIGN_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Sign ) 运行结果差不多 有三个字段 但是数据都在Applicant_name下 有点想法了 我再看看
Yole 2013-12-10
  • 打赏
  • 举报
回复

select a.Applicant_name,'' as HEAD_name,'' as SIGN_name from 
(
select hum_list.first_name Applicant_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Applicant
union all
select hum_list.first_name HEAD_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.HEAD
union all
select hum_list.first_name SIGN_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Sign
) a 

紫九 2013-12-10
  • 打赏
  • 举报
回复
select hum_list.first_name Applicant_name,hum_list.first_name HEAD_name,hum_list.first_name SIGN_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Applicant or hum_list.human_id=s_zhgl_Send_meal.HEAD or hum_list.human_id=s_zhgl_Send_meal.Sign 用or 得出来的是重复的数据 但是有三个字段 用and 得出来的无数据 但是也有三个字段 数据库里面是三个字段下个有一个数据 Applicant,HEAD ,Sign 三个字段对应的汉字都是从hum_list表中的first_name(显示的是汉字)字段中取出的human_id(对应的ID)
紫九 2013-12-10
  • 打赏
  • 举报
回复
貌似不行 直接运行不通过了 晕
蝶恋花雨 2013-12-10
  • 打赏
  • 举报
回复
用with as
with ResultData as 
{
select hum_list.first_name Applicant_name,hum_list.first_name HEAD_name,hum_list.first_name SIGN_name
 from hum_list,s_zhgl_Send_meal  where hum_list.human_id=s_zhgl_Send_meal.Applicant and
 hum_list.human_id=s_zhgl_Send_meal.HEAD and hum_list.human_id=s_zhgl_Send_meal.Sign
//and 你试试行不行不行改成or试试 然后看看需不需要加group by 
}
select Applicant_name,HEAD_name,SIGN_name from ResultData //看看需不需要加group by  
紫九 2013-12-10
  • 打赏
  • 举报
回复
ORA-00904:"A"."SIGN_NAME" 标识符无效
紫九 2013-12-10
  • 打赏
  • 举报
回复
额 还是报错
Yole 2013-12-10
  • 打赏
  • 举报
回复
引用 楼主 u012526879 的回复:
select Applicant_name,HEAD_name,SIGN_name from ( select hum_list.first_name Applicant_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Applicant union all select hum_list.first_name HEAD_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.HEAD union all select hum_list.first_name SIGN_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Sign ) 运行报错:"SIGN_name"标识符无效 select * from ( select hum_list.first_name Applicant_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Applicant union all select hum_list.first_name HEAD_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.HEAD union all select hum_list.first_name SIGN_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Sign ) 运行无错误 但是我需要Applicant_name,HEAD_name,SIGN_name 三个字段 运行结果只有Applicant_name一个字段 请教各大神应该怎么改

select a.Applicant_name,a.HEAD_name,a.SIGN_name from 
(
select hum_list.first_name Applicant_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Applicant
union all
select hum_list.first_name HEAD_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.HEAD
union all
select hum_list.first_name SIGN_name from hum_list,s_zhgl_Send_meal where hum_list.human_id=s_zhgl_Send_meal.Sign
) a 
语法有错误,后面加个别名就好了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧