表字段值与另一表字段名相同问题。

农村的我 2012-04-20 09:11:13
现有表A:
A1 A2 A3
1 2 工资
2 3 分红
3 1 奖金

表B:
工资 奖金 加班工资 分红 ....(还有很多其他字段)
1 3 1 2
2 2 3 2
3 1 3 3

怎样根据表A的A3字段值将表B里对应字段名(表A的A3字段值为表B的全部字段名的一部分)的内容取出来?求高手指点一二!感激不尽!!

...全文
150 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
农村的我 2012-04-23
  • 打赏
  • 举报
回复
自己解决了!分享一下部分代码:
declare Ttype varchar(30);

declare Tid int;

declare Tmin int;

declare Tmax int;



select min(A1) into Tmin from A;

select max(A1) into Tmax from A;



while Tmin<=Tmax do

select A3 into Ttype from A where A1=Tmin;-- C表C2字段 类型名

select A1 into Tid from A where A3=Tmin;-- C表C1字段 类型定义ID(来源A表)



set @Tsql=concat("insert into C(C1,C2) select ",Tid,",",Ttype," from B;");

prepare Ttidy from @Tsql;

execute Tidy;

-- C表插入数据;



Tmin=Tmin+1;

end while;
ACMAIN_CHM 2012-04-20
  • 打赏
  • 举报
回复
http://blog.csdn.net/acmain_chm/article/details/4283943
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c...
农村的我 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
提问有技巧的,要达到什么目的,用你的数据?
A1 A2 A3
1 2 工资
select 工资 from b ?
[/Quote]
就是一个匹配问题吧。我现在纠结的就是A3字段是varchar类型的,那么怎样让这个varchar类型的字段的值作为能与B中的字段名(什么类型确实不懂)进行比较从而作为判断条件将B表中的能匹配的字段的内容选出?
nicenight 2012-04-20
  • 打赏
  • 举报
回复
猜 lz 要的是这个?
mysql> select * from config;
+----+----------+
| id | name |
+----+----------+
| 1 | salary |
| 2 | bonus |
| 3 | overtime |
+----+----------+
3 rows in set (0.00 sec)

mysql> select * from data;
+--------+-------+----------+
| salary | bonus | overtime |
+--------+-------+----------+
| 1 | 2 | 4 |
| 3 | 3 | 3 |
+--------+-------+----------+
2 rows in set (0.00 sec)

mysql> select @sql := concat("select ", group_concat(name), " from data;")
-> from config
-> where id in (1, 2);
+--------------------------------------------------------------+
| @sql := concat("select ", group_concat(name), " from data;") |
+--------------------------------------------------------------+
| select salary,bonus from data; |
+--------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
mysql> prepare sp from @sql;
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> execute sp;
+--------+-------+
| salary | bonus |
+--------+-------+
| 1 | 2 |
| 3 | 3 |
+--------+-------+
2 rows in set (0.00 sec)

mysql> drop prepare sp;
Query OK, 0 rows affected (0.00 sec)
wwwwb 2012-04-20
  • 打赏
  • 举报
回复
提问有技巧的,要达到什么目的,用你的数据?
A1 A2 A3
1 2 工资
select 工资 from b ?
农村的我 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 4 楼 business122 的回复:

引用 3 楼 的回复:
比如:
A1 A2 A3
1 2 工资
结果是什么

嗯,可能刚我没表述清楚:A表是个定义表,B表是总表,我想的是根据A表里的A3字段的所有值譬如"工资" “奖金”等将B表里对应的字段名 工资 奖金 等 里面的内容取出来。

举例说明
比如:
A1 A2 A3
1 2 工资
结果是什么
[/Quote]

...着实不懂。我就是想写个存储过程,通过表A的定义将总表B里面的有用信息筛选出来填到一个新表C中...您问的结果是什么具体指?懂的有限,还望不吝赐教。谢谢!
wwwwb 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 business122 的回复:]

引用 3 楼 的回复:
比如:
A1 A2 A3
1 2 工资
结果是什么

嗯,可能刚我没表述清楚:A表是个定义表,B表是总表,我想的是根据A表里的A3字段的所有值譬如"工资" “奖金”等将B表里对应的字段名 工资 奖金 等 里面的内容取出来。
[/Quote]
举例说明
比如:
A1 A2 A3
1 2 工资
结果是什么
农村的我 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
比如:
A1 A2 A3
1 2 工资
结果是什么
[/Quote]
嗯,可能刚我没表述清楚:A表是个定义表,B表是总表,我想的是根据A表里的A3字段的所有值譬如"工资" “奖金”等将B表里对应的字段名 工资 奖金 等 里面的内容取出来。
wwwwb 2012-04-20
  • 打赏
  • 举报
回复
比如:
A1 A2 A3
1 2 工资
结果是什么
农村的我 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
举例说明,这个要用动态执行的方法
[/Quote]

...那如何动态执行,求指教!
wwwwb 2012-04-20
  • 打赏
  • 举报
回复
举例说明,这个要用动态执行的方法
农村的我 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
猜 lz 要的是这个?

SQL code
mysql> select * from config;
+----+----------+
| id | name |
+----+----------+
| 1 | salary |
| 2 | bonus |
| 3 | overtime |
+----+----------+
3 rows in se……
[/Quote]
...我要的是从data表转换成config表,压力山大。
农村的我 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
http://blog.csdn.net/acmain_chm/article/details/4283943
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html……
[/Quote]
我的需求正好相反是要生成tx类型的表...看来有点棘手,但还是感谢提供资料,很有用,获益匪浅!

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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