两表法和三表法查询MySQL表设计

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(4084)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'mysql 多对多,三表查询',
blogAbstract:'
多对多,三表联查: 查主表,LEFT JOIN关系表,再LEFT JOIN第三表,最后按关系表中的“主表ID”进行 GROUP BY。& && && &GROUP_CONCAT(groups.name SEPARATOR \' | \') AS name 进行重复项合并。例如:users:主表users_groups:关系表groups:第三表(可根据实际需要 变成“主表”)$this-&db-&select(\"users.*, GROUP_CONCAT(groups.name SEPARATOR \' | \') AS name \");$this-&db-&from(\'users\');$this-&db-&join(\'users_groups\',\'users.id = users_groups.user_id\',\'LEFT\');$this-&db-&join(\'groups\',\'users_groups.group_id = groups.id\',\'LEFT\');',
blogTag:'mysql,三表联查',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:4,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}急!!求MYSQL三表关联查询方法_百度知道
急!!求MYSQL三表关联查询方法
三个表 A表有字段 tid,subject B表有字段 tid,attachment
C表有字段 tid,message
三个表的tid字段内容相同。请问怎么关联查询呢,可否提供实例,谢谢!
非常感谢高手们的热心帮助.问题已经解决
我有更好的答案
select * from subject
a join attachment
b on a.tid=b.tid
join message
c on b.tid=c.tid或者select * from subject
a ,attachment
c where a.tid=b.tid and b.tid=c.tid
采纳率:28%
用子查处或是连接
select *from A, B, Cwhere A.tid=B.tid and
B.tid=C.tid
为您推荐:
其他类似问题
mysql的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。mysql 3个表关联时查询时的优化 - ITeye问答
一共三张表tips,tippings,comments。tippings 是中间表。tips 和 comments 是多对多的关系。tips只有两列:id,name
tippings 的create语句:
CREATE TABLE `tippings` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`tip_id` INT(11) NULL DEFAULT NULL,
`tippable_id` INT(11) NULL DEFAULT NULL,
`tipper_id` INT(11) NULL DEFAULT NULL,
`tipper_type` VARCHAR(255) NULL DEFAULT NULL,
`tippable_type` ENUM('Post','Comment') NULL DEFAULT NULL,
`context` ENUM('tips') NULL DEFAULT NULL,
`created_at` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `index_tippings_on_tip_id` (`tip_id`),
INDEX `index_tippings_on_tippable_id_and_tippable_type_and_context` (`tippable_id`, `tippable_type`, `context`),
INDEX `index_cttt` (`context`, `tippable_type`, `tippable_id`, `tip_id`)
查询语句为
tips.*, COUNT(*) AS count FROM `tips` LEFT OUTER JOIN tippings
ON tips.id = tippings.tip_id
INNER JOIN
comments ON comments.id = tippings.tippable_id WHERE (tippings.tippable_type
= 'Comment')
GROUP BY tips.id, tips.name HAVING COUNT(*) & 0 ORDER BY
count desc LIMIT 75;
tippings 目前800多万条记录。
查询速度太慢
各位帮忙看看能不能更好的优化下
问题补充:wxjiaaa 写道表大了就不联表咯 各种子查询
谢谢,但关键是后两个表,不关联是拿不出结果的。所以,还是想着能不能优化一下索引。
问题补充:asyty 写道可以用多列索引
我已经用过复合索引了。index_tippings_on_tippable_id_and_tippable_type_and_context
而且这个索引建的还很合适。如果要改的话,也只是把它改为index_tippings_on_tippable_id_and_tippable_type_and_tip_id
采纳的答案
额 错了 http://asyty.iteye.com/blog/1202943
额 貌似比较复杂
你可慢慢研究下,之前刚整理了下mysql的优化。。。
http://asyty.iteye.com/admin/blogs/1202943
可以用多列索引
用中间表当主表 两个关联的当字表
表大了就不联表咯 各种子查询
已解决问题
未解决问题实现mysql的三表联查
我的图书馆
实现mysql的三表联查
这几天都在学mysql,中午被一道题卡住了
题为:实现goods表,category表,brand表,3表连接查询,得出以下字段
brand_name
goods_name
& & &里面有goods、category、brand三张表,两表联查是会的
[php] &span&style="font-family:'Microsoft&YaHei';font-size:12"&select&goods_id,goods.cat_id,cat_name,goods.brand_id,goods_name&from&goods&left&join&category&on&goods.cat_id&=&category.cat_id&/span&&&& & &可是三表联查却有些绕了,刚开始按我的理解模式为,上面的查询结果当做一张表,再左连接
[java] &span&style="font-family:'Microsoft&YaHei';font-size:12"&select&goods_id,goods.cat_id,cat_name,goods.brand_id,brand_name,goods_name&from&goods&left&join&category&on&goods.cat_id&=&category.cat_id&left&join&brand&on&goods.brand_id&=&brand.brand_&/span&&&& & & & &结果是出来了,可是感觉如昨天看的资料有点不一样,昨天是把查询结果当做一张表,然后用括号括起来,再做左连接可发现不成功
[php] &span&style="font-family:'Microsoft&YaHei';font-size:12"&select&brand_name&from&(select&goods_id,goods.cat_id,cat_name,goods.brand_id,goods_name&from&goods&left&join&category&on&goods.cat_id&=&category.cat_id)&as&temp&left&join&brand&on&goods.brand_id&=&brand.brand_&/span&&&& &
& 后来仔细想想,发现应该把
[php] &span&style="font-family:'Microsoft&YaHei';font-size:12"&goods&left&join&category&on&goods.cat_id&=&category.cat_id&/span&&&& & & &&当做一张表来看,那么结果就可以理解通顺了。
& & &之所以写这个,一是提醒下自己以后不要又陷入思维定式了,二是,今天中午也上网查了下资料,可是满意的却没有,于是就整理下,写了下来,高手勿哂。
TA的最新馆藏[转]&
喜欢该文的人也喜欢mysql存储过程怎么实现三表查询
我们做一个宠物商城系统,比如 : 鱼--淡水鱼--金鱼,最后一级的金鱼要实现三表查询,我们用的(三层架构)和(jsp与sevlert)书写方法,请问老师们,怎么实现这个三表查询?
不能用join,只能用存储过程。
暂无任何回答
61589人关注
76712人关注
15634人关注
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11}

我要回帖

更多关于 财务报表三表一注 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信