Foxtable(狐表)用户栏目专家坐堂 → [求助]查询表SQL语句


  共有11467人关注过本帖树形打印复制链接

主题:[求助]查询表SQL语句

帅哥哟,离线,有人找我吗?
jspta
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
[求助]查询表SQL语句  发帖心情 Post By:2012/9/7 18:15:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar

有三个表,表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语句能够解决这个问题。谢谢!

 


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:5.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2012-9-7 22:45:42编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/7 21:31:00 [只看该作者]

看不懂你的问题,帮你顶顶

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2012/9/7 21:42:00 [只看该作者]

添加了图片,打方框的就是我问题中描述的。最后一张图大方框,就是我想要的结果


 回到顶部
帅哥哟,离线,有人找我吗?
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/9/7 22:13:00 [只看该作者]

虽然很努力地去看了,但还是没看懂

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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')

 回到顶部