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..: 没有字段给你进行连接呀,去做判断对应与汉字表,拼音表,词语表,句子表吗?再用临时表保存查询的结果,需要这样可以给你写一个
表的FK是什么啊?没有这个请问怎么写?
可以用case when试试
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
这个要联接4次。
A表和其他表没有键关联 无法写出来 无解