SQL查询两张表~~~~~~~~~~~

csdn-baoli 2018-08-05 10:14:07
目前是两张表,没有外键,一个是订单主表,一个是明细表,关联关系为两个字段关联的,sql怎么写呢,目前我是在控制层,利用两个字段先去主表查,获取单条记录,再利用这两个字段去明细表查,多条,这是分开查,听说这样总是数据连接,不好,那怎么用sql查询两张表呢,持久层,我用的mybatis,看到的大神,帮忙处理下,谢谢!
...全文
1032 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫陌凡尘 2018-10-17
  • 打赏
  • 举报
回复
废话少说,直接上代码,一看就懂

<resultMap id="tableAInfoResult" type="tableAInfo">
<result property="id" column="questionId"/>
<result property="remarks" column="remarks"/>
<result property="delFlag" column="delFlag"/>
<collection property="tableBList(实体tableAInfo的属性)" column="{delFlag=delFlag,questionId=questionId}" select="getTableBList" />
</resultMap>

<sql id="tableAColumns">
a.question_id AS id,
a.remarks AS remarks,
a.del_flag AS delFlag
</sql>

<select id="get" resultType="tableAInfoResult" >
SELECT
<include refid="tableAColumns"/>
FROM tableA a
WHERE a.id = #{id}
</select>

<select id="getTableBList" parameterType="java.util.HashMap" resultType="实体路径.entity.TableB">
select
b.id AS "id",
b.remarks AS "remarks",
b.del_flag AS "delFlag"
FROM tableB b
where b.del_flag = #{delFlag}
AND b.question_id = #{questionId}
ORDER BY b.question_no ASC
</select>
面包先生 2018-10-17
  • 打赏
  • 举报
回复
只要中间有2个表对应就行了吧 用 左右主链接都行吧
鬼善 2018-10-13
  • 打赏
  • 举报
回复
方法很多具体看你的业务是啥,比如左右全连接,先查a在查b,具体看表的数据量多少决定你的选择
Howe~zZ 2018-10-10
  • 打赏
  • 举报
回复
直接数据库写链接查询,比较好主表链接副表
HeiBoyYang 2018-10-09
  • 打赏
  • 举报
回复
select 主表字段 a,明细表字段 b from 主表 a left join 明细表 on a.字段1=b.字段1 and a.字段2=b.字段2 ;
进击丶Saber 2018-10-09
  • 打赏
  • 举报
回复
用关联查询,left join on
qq_28057679 2018-08-12
  • 打赏
  • 举报
回复
select * form A left join B on A.id=B.aId
北辰 2018-08-10
  • 打赏
  • 举报
回复
连接查询是可以的。但是,这种场景,在我看来,一般的流程都是 订单主表的数据是列表的形式展示,然后有个详情,点进去,查看的就是详情的信息。所有有没有必要做连接查询,楼主可以根据业务场景决定
weixin_40057704 2018-08-10
  • 打赏
  • 举报
回复
resultMap里
<collection property="orderDetails" ofType="OrderDetail" column="id">
....
</collection>
sql 大概这样
select ... from order left join order_detail
on order.id=order_detail.order_id
where ...
MVP般想念 2018-08-09
  • 打赏
  • 举报
回复
union all 可以了解下
戎码一生灬 2018-08-08
  • 打赏
  • 举报
回复
引用 3 楼 Raffin 的回复:
用join,不要分开查询
用个毛的join,以后拆表的时候恶心死你
晨曦遇晓 2018-08-06
  • 打赏
  • 举报
回复
现在很少用主外键了 真的 楼主要查什么数据 2张数据库发来 帮你写
预见-遇见 2018-08-06
  • 打赏
  • 举报
回复
mybatis的collection标签了解一下
Krning 2018-08-06
  • 打赏
  • 举报
回复
http://www.cnblogs.com/yyjie/p/7788413.html 看这个的介绍,用左连接或者右连接
  • 打赏
  • 举报
回复
LZ是否是遇到了单行子查询返回多个值导致的错误?
如果是的话,用select ... from 表名 inner join 表名 on 条件语句 inner join 表名 on 条件语句...... 如果还有限制条件,以此类推下去
csdn-baoli 2018-08-05
  • 打赏
  • 举报
回复
分开差,效率好像是不高哦!是一对多的关系,但是没有外键,都是独立的表,有两个字段可以关联查询,但是从表的字段查不出来,不知道什么原因
沁海棠 2018-08-05
  • 打赏
  • 举报
回复
分开查可以的, 两张表一对多,可以连接查询一下.百度 mysql连接查询
鸣鸣Amadues 2018-08-05
  • 打赏
  • 举报
回复
用join,不要分开查询

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧