一对多关系的数据表联查

九千里 发布于 2016/06/14 11:49
阅读 306
收藏 0

情况是这样:橘子表,苹果表,入货表,图片表
每次入货,都会在苹果表或橘子表生成一条新的记录记录下购买的时间和其他信息等,然后在入货表都有一条新记录记下购买的是苹果还是橘子(根据橘子或苹果表的新纪录的主ID),并且在图片表有一条记录记下购买时的图片,用以关联的是橘子或苹果表的另一个同名列photoid,
问题是,现在如何通过入货表的一条记录,关联查找出此次记录的橘子和苹果记录(即使此次记录买的是苹果,橘子表记录的空记录也记录出来也没关系),还有此次入货的水果的图片表记录

另外:我已经用left join或inner join righ join 实现了一个,请写一条不用join的表达一下? 我用来对比效率

既然提到表结构我就构思一个吧..数据库上面那个太多数据列,贴出来很乱



A 苹果表
------------
aid
photoid
otherdata
===============


B 橘子表
------------
bid
photoid
otherdata
===============


C 入货表
---------------
id
abid   //可以放ab表的id
otherdata
=================


D 图像表
---------------
photoid
photourl


加载中
1
清尘V
清尘V
把表结构和数据展示出来呀
清尘V
清尘V
回复 @九千里 : 把语句都弄出来 这样我们给你答案也快 再加点数据就更好了 哈哈
九千里
九千里
我自己构思了一个。。
0
都哑
都哑

不用join?用union吗?

我战5渣

select * from a,d where a.aid=c.abid and a.photoid=d.photoid

union

select * from b,d where b.bid=c.abid and b.photoid=d.photoid

a.aid、b.bid不能有交集

九千里
九千里
思路我懂,貌似可以,我先试下,但是你这条貌似漏写C表了,哈哈哈
九千里
九千里
不好意思刚才点错了= =
0
月生无界
月生无界

不用join怎么查?你表设计的结构本来就是需要用join才能完成多个表的关联查询

当然,也可以直接弄个视图,全部东西弄进去,到时查就方便了,直接一条select * from view where id=xx


0
忧郁麦芽
忧郁麦芽
多表查询 还不用join  表之间还有关联  应该不行吧  - -!其实我觉得  你一个入库操作干嘛搞这么复杂- -!放一个表就可以了 ~~~~~橘子苹果不就是货物种类吗? 哪怕你做个表存货物详细信息  关联关系 是入库单 和 货物详细信息表  关联  也比你这简单啊
九千里
九千里
回复 @忧郁麦芽 : 我用join写了一个,但是想写一个不用join的,对比下效率...
忧郁麦芽
忧郁麦芽
回复 @九千里 : 额 主设计员这么搞一定有这么搞得道理啊 不过 你这个问题估计没谱啊 肯定要用join啊
九千里
九千里
很有道理= = 可惜我不是主设计员
0
g
gongliww

一个想法

把入货表的abid拆成aid跟bid

返回顶部
顶部