首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求条简单的sql语句解决方案

2012-01-06 
求条简单的sql语句有两张表如下表rrt_classrrt_classidclassnametb_id1初一(1)12初二(1)2表rrt_teacher_cl

求条简单的sql语句
有两张表如下

表rrt_class

rrt_classid     classname       tb_id
        1                   初一(1)         1
        2                   初二(1)         2

表rrt_teacher_class

rrt_t_classid       classname       tb_id
            1                     初一(2)         1
            2                     初一(3)         1
            3                     初二(2)         2
            4                     初二(3)         3
            5                     初二(4)         4

我想按tb_id这个条件来查询
两个表中classname只要满足tb_id
就全部查询出来!
用datagrid表示出来
这里只要查询语句


[解决办法]
select * from rrt_class where tb_id = 1
union all
select * from rrt_tearch_class where tb_id = 1
[解决办法]
不知道你要哪种格式
CREATE TABLE rrt_class
(
rrt_classid INT,
classname VARCHAR(20),
tb_id INT
)
INSERT INTO rrt_class
SELECT 1, '初一(1) ',1 UNION ALL
SELECT 2, '初二(1) ',2

CREATE TABLE rrt_teacher_class
(
rrt_t_classid INT,
classname VARCHAR(20),
tb_id INT
)
INSERT INTO rrt_teacher_class
SELECT 1, '初一(2) ',1 UNION ALL
SELECT 2, '初一(3) ',1 UNION ALL
SELECT 3, '初二(2) ',2 UNION ALL
SELECT 4, '初二(3) ',3 UNION ALL
SELECT 5, '初二(4) ',4
GO
SELECT A.classname,A.tb_id FROM rrt_class A INNER JOIN rrt_teacher_class B ON A.tb_id=B.tb_id UNION
SELECT B.classname,A.tb_id FROM rrt_class A INNER JOIN rrt_teacher_class B ON A.tb_id=B.tb_id
--结果
classname tb_id
-------------------- -----------
初二(1) 2
初二(2) 2
初一(1) 1
初一(2) 1
初一(3) 1

(5 行受影响)
CREATE FUNCTION dbo.f_str(@col1 int)
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re= ' '
SELECT @re=@re+ ', '+c.classname
FROM
(SELECT A.classname,A.tb_id FROM rrt_class A INNER JOIN rrt_teacher_class B ON A.tb_id=B.tb_id UNION
SELECT B.classname,A.tb_id FROM rrt_class A INNER JOIN rrt_teacher_class B ON A.tb_id=B.tb_id) c
WHERE tb_id=@col1
RETURN(STUFF(@re,1,1, ' '))
END
GO
SELECT distinct tb_id,dbo.f_str(tb_id) classname
FROM
(SELECT A.classname,A.tb_id FROM rrt_class A INNER JOIN rrt_teacher_class B ON A.tb_id=B.tb_id UNION
SELECT B.classname,A.tb_id FROM rrt_class A INNER JOIN rrt_teacher_class B ON A.tb_id=B.tb_id) c
--结果
tb_id classname
----------- ----------------------------------------------------------------
1 初一(1),初一(2),初一(3)
2 初二(1),初二(2)

(2 行受影响)
------解决方案--------------------


CREATE TABLE rrt_class
(
rrt_classid INT,
classname VARCHAR(20),
tb_id INT
)
INSERT INTO rrt_class
SELECT 1, '初一(1) ',1 UNION ALL
SELECT 2, '初二(1) ',2

CREATE TABLE rrt_teacher_class
(
rrt_t_classid INT,
classname VARCHAR(20),
tb_id INT
)
INSERT INTO rrt_teacher_class
SELECT 1, '初一(2) ',1 UNION ALL
SELECT 2, '初一(3) ',1 UNION ALL
SELECT 3, '初二(2) ',2 UNION ALL
SELECT 4, '初二(3) ',3 UNION ALL
SELECT 5, '初二(4) ',4
GO
SELECT * FROM (
SELECT A.rrt_classid,A.classname,A.tb_id FROM rrt_class A INNER JOIN rrt_teacher_class B ON A.tb_id=B.tb_id UNION
SELECT B.rrt_t_classid,B.classname,A.tb_id FROM rrt_class A INNER JOIN rrt_teacher_class B ON A.tb_id=B.tb_id
) C ORDER BY tb_id
--结果
rrt_classid classname tb_id
----------- -------------------- -----------
1 初一(1) 1
1 初一(2) 1
2 初一(3) 1
2 初二(1) 2
3 初二(2) 2

(5 行受影响)

加where可查出1或2的

热点排行