以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]查询表SQL语句 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23283) |
||||
-- 作者:jspta -- 发布时间:2012/9/7 18:15:00 -- [求助]查询表SQL语句
有三个表,表1,表2,表3 ,A1、A2为A的子类别,互不相同,依次类推.其中这些数字编号就是主键和外键 举个例子, 在查询前,已知A,B,A1 需要结果,查找到表3中,[名称编号1]中为A1,且[名称编号2]与B相关编号(形式为Bx)的行,并返回该查询 目前思路,先在表A找到A,B的对应编号1和2,然后在表B中找到A,B组合后对应编号1,根据这个编号1,在表C中找到相关行,同时根据A1的值,查找到符合的行。并返回这个查询表 希望尽量用一句SQL语句能够解决这个问题。谢谢!
此主题相关图片如下:2.jpg 此主题相关图片如下:3.jpg 此主题相关图片如下:4.jpg 此主题相关图片如下:5.jpg [此贴子已经被作者于2012-9-7 22:45:42编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/9/7 21:31:00 -- 看不懂你的问题,帮你顶顶 |
||||
-- 作者:jspta -- 发布时间:2012/9/7 21:42:00 -- 添加了图片,打方框的就是我问题中描述的。最后一张图大方框,就是我想要的结果 |
||||
-- 作者:飞 -- 发布时间:2012/9/7 22:13:00 -- 虽然很努力地去看了,但还是没看懂 |
||||
-- 作者:lin_hailun -- 发布时间:2012/9/7 22:45:00 -- 很努力去看了,你的意思是不是,我根据 A B 和 A1 三个值,得到最后一张图的数据? 怎么感觉好绕哦。 select {表C}.编号, {表C}.名称编号1, {表C}.名称编号2, {表C}.表B编号 from (select * from (select * from {表C} inner join {表B} on {表C}.表B编号 = {表B}.编号) As tb1 inner join {表A} on tb1.表A编号1 = {表A}.编号) as tb2 inner join {表A} on tb2.表A编号2 = {表A}.编号 where tb2.名称编号1 = \'A1\' and ({表A}.名称 = \'A\' or {表A}.名称 = \'B\') |
||||
-- 作者:jspta -- 发布时间:2012/9/7 23:03:00 -- 以下是引用lin_hailun在2012-9-7 22:45:00的发言:
很努力去看了,你的意思是不是,我根据 A B 和 A1 三个值,得到最后一张图的数据? 怎么感觉好绕哦。 select {表C}.编号, {表C}.名称编号1, {表C}.名称编号2, {表C}.表B编号 from (select * from (select * from {表C} inner join {表B} on {表C}.表B编号 = {表B}.编号) As tb1 inner join {表A} on tb1.表A编号1 = {表A}.编号) as tb2 inner join {表A} on tb2.表A编号2 = {表A}.编号 where tb2.名称编号1 = \'A1\' and ({表A}.名称 = \'A\' or {表A}.名称 = \'B\') 就是这个意思,可能我表结构设计的有问题。 我原意是在表1中,任意两个名称(每个名称都有对应的子类N个),组成一组子类别中的1对N关系, 表2的目的是用来描述着这些子类别是由哪两个名称确定的关系。(换句话说,A1和B1的关系不足以描述是属于哪两个名称确定的)
好像有点绕。。。。 |
||||
-- 作者:lin_hailun -- 发布时间:2012/9/8 0:55:00 -- 好像下面这样才正确 select {表C}.编号, {表C}.名称编号1, {表C}.名称编号2, {表C}.表B编号 from (select * from (select * from {表C} inner join {表B} on {表C}.表B编号 = {表B}.编号) As tb1 inner join {表A} on tb1.表A编号1 = {表A}.编号) as tb2 inner join {表A} on tb2.表A编号2 = {表A}.编号 where tb2.名称编号1 = \'A1\' and ({表A}.名称 = \'A\' or {表A}.名称 = \'B\') and (tb2.名称 = \'A\' or tb2.名称 = \'B\') |