首页 新闻 会员 周边 捐助

sql 多表链接查询

0
悬赏园豆:10 [已关闭问题] 关闭于 2015-08-25 14:50

A表 id   pid(对应表id) typeid(0-汉字、1-拼音、2-词语、3-句子)

      1     1                    0 

      2     1                    1

      3      1                    2

      4      1                    3

汉字表 pid name nameen

          1     汗      han

拼音表 py_id  py_name

            1         a

词语表 cy_id    cy_name  cy_nameen

             1          师傅        shifu

句子表 jz_id     jz_name              jz_nameen

             1         对不起,没关系     duibuqi,meiguanxi

 

查出来结果如下: 怎么写sql啊

 id   pid  typeid   name   nameen

1     1        0       汗      han

2     1        1        a

3      1       2        师傅        shifu

4      1       3        对不起,没关系     duibuqi,meiguanxi

..00..的主页 ..00.. | 初学一级 | 园豆:49
提问于:2015-08-03 17:11
< >
分享
所有回答(6)
0

你这表关系我写到一般绝对还是不写了

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-03 17:21

为什么?

支持(0) 反对(0) ..00.. | 园豆:49 (初学一级) | 2015-08-03 17:22

@..00..: 没有字段给你进行连接呀,去做判断对应与汉字表,拼音表,词语表,句子表吗?再用临时表保存查询的结果,需要这样可以给你写一个

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-03 17:31
0

表的FK是什么啊?没有这个请问怎么写?

如此低调的男人 | 园豆:842 (小虾三级) | 2015-08-03 20:42
0

可以用case when试试

凡凡的爸爸 | 园豆:202 (菜鸟二级) | 2015-08-04 13:58
0

SELECT tbl.* ,
(CASE tbl.typeid WHEN 0 THEN #tbl1.name WHEN 1 THEN #tbl2.py_name WHEN 2 THEN #tbl3.cy_name WHEN 3 THEN #tbl4.jz_name END) AS [name],
(CASE tbl.typeid WHEN 0 THEN #tbl1.nameen WHEN 1 THEN '' WHEN 2 THEN #tbl3.cy_nameen WHEN 3 THEN #tbl4.jz_nameen END) AS [nameen]
FROM tbl
LEFT JOIN #tbl1 ON tbl.pid = #tbl1.pid
LEFT JOIN #tbl2 ON tbl.pid = #tbl2.py_id
LEFT JOIN #tbl3 ON tbl.pid = #tbl3.cy_id
LEFT JOIN #tbl4 ON tbl.pid = #tbl4.jz_id

小白菜T | 园豆:564 (小虾三级) | 2015-08-04 14:59
0

这个要联接4次。

gw2010 | 园豆:1487 (小虾三级) | 2015-08-04 15:28
0

A表和其他表没有键关联 无法写出来 无解

nicky0227 | 园豆:1069 (小虾三级) | 2015-08-04 17:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册