求一个sql语句怎么写

求学Sir 发布于 2017/01/11 10:04
阅读 325
收藏 0

两个数据库的表如下,problem:

book:

problem表里的problemMajor,problemNature,problemClassify三个都是引用的book表里的数据,现在我想将problem表里的内容全部查询出来并且problemMajor,problemNature,problemClassify三项是book表里的name,这个sql语句怎么写

加载中
0
开源中国首席投资人
开源中国首席投资人

一般有两种写法。

第一种:

SELECT
    p.id,
    (SELECT name FROM b WHERE b.id = p.major) major,
    (SELECT name FROM b WHERE b.id = p.nature) nature,
    (SELECT name FROM b WHERE b.id = p.class) class
FROM p

第二种:

    使用JOIN语句。

0
暴猿
暴猿

你的表述能力实在太差了   加上给的数据图表的关系数据又是这么不清楚   这样很难得到别人的帮助的  就算勉强给出答案也不是你想要的额  


0
求学Sir
求学Sir

引用来自“暴猿”的评论

你的表述能力实在太差了   加上给的数据图表的关系数据又是这么不清楚   这样很难得到别人的帮助的  就算勉强给出答案也不是你想要的额  


problem是book表的外键表

problem里的problemMajor,problemNature,problemClassify三项都是book表里entryId的外键,现在是联合查询,problemMajor,problemNature,problemClassify显示的是entryName

0
求学Sir
求学Sir

引用来自“纳兰融雪”的评论

一般有两种写法。

第一种:

SELECT
    p.id,
    (SELECT name FROM b WHERE b.id = p.major) major,
    (SELECT name FROM b WHERE b.id = p.nature) nature,
    (SELECT name FROM b WHERE b.id = p.class) class
FROM p

第二种:

    使用JOIN语句。

join语句怎么写呢,因为要求尽量不要有select从句,麻烦了
0
魔力猫
魔力猫
select b1.entryName problem,
b2.entryName problemmajor,
b3.entryname problemnature,
p接下来的
 from problem p
left join book b1 on p.problemId = b1.entryid
left join book b2 on p.problemmajor= b2.entryid
left join book b3 on p.problemnature= b3.entryid




风翔飞
风翔飞
正解
0
ManderSF
ManderSF
看了半天不知道你在说什么  
0
redraiment
redraiment
select
  problem.problemId,
  problem.problemContent,
  problem.problemLevel,
  major.entryName as problemMajor,
  nature.entryName as problemNature,
  classify.entryName as problemClassify
from
  problem
inner join
  book as major
on
  problem.problemMajor = major.entryId
inner join
  book as nature
on
  problem.problemNature = nature.entryId
inner join
  book as classify
on
  problem.problemClassify = classify.entryId
order by
  problem.problemId
返回顶部
顶部