日期:2014-05-19  浏览次数:20610 次

求条简单的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 行受影响)
------解决方案-------