问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

建立数据库遇到的基础问题?

发布网友 发布时间:2022-04-10 04:19

我来回答

2个回答

懂视网 时间:2022-04-10 08:40

select id="selectByCondition" parameterType="map" resultMap="BaseResultMap"> select count(*) purchase_num, b.*, a.create_time AS s_create_time, a.sales_order_no, a.amount_tax_sum, a.sales_order_status_name, a.marker_date, a.checker_date,a.sales_order_id from b_sales_order a, b_sales_order_detail b WHERE a.sales_order_id = b.sales_order_id AND a.delete_flag =‘0‘ <if test="map.statusList !=null and map.statusList.size > 0"> AND a.sales_order_status_code in <foreach item="item" index="index" collection="map.statusList" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="map.flag == true and map.isEqual ==true"> AND b.request_number = b.outstock_number </if> <if test="map.flag == true and map.isEqual ==false"> AND b.request_number > b.outstock_number </if> <if test="map.markerId!=null"> AND a.marker_id=#{map.markerId} </if> /*GROUP BY a.sales_order_id*/ ORDER BY a.marker_date DESC LIMIT #{map.offset},#{map.pageSize} </select>

1. 除开动态sql,即使我用

select count(*) purchase_num, b.*, a.create_time AS s_create_time, a.sales_order_no, a.amount_tax_sum,
 a.sales_order_status_name, a.marker_date, a.checker_date,a.sales_order_id
 from b_sales_order a,
 b_sales_order_detail b WHERE a.sales_order_id = b.sales_order_id
 AND a.delete_flag =‘0‘

查询结果也只有1条记录。当我把 count(*)删除时,开始有多条数据。这里count是统计函数,由于使用了它,数据只有1行。

2.我用

select b.*, a.create_time AS s_create_time, a.sales_order_no, a.amount_tax_sum,
 a.sales_order_status_name, a.marker_date, a.checker_date,a.sales_order_id
 from b_sales_order a,
 b_sales_order_detail b WHERE a.sales_order_id = b.sales_order_id
 AND a.delete_flag =‘0‘ AND marker_id = 11
GROUP BY a.sales_order_id

查询时候,发现数据也只有1条。我这里用到了分组查询。当我把

GROUP BY a.sales_order_id删除后,开始有多条数据。

3.在以下SQL中
<select id="countByCondition" parameterType="map" resultType="java.lang.Integer">
 select COUNT(*) from
 (select COUNT(*) from b_sales_order a,
 b_sales_order_detail b WHERE a.sales_order_id = b.sales_order_id
 AND a.delete_flag =‘0‘

 <if test="map.statusList !=null and map.statusList.size > 0">
 AND a.sales_order_status_code in
 <foreach item="item" index="index" collection="map.statusList"
  open="(" separator="," close=")">
 #{item}
 </foreach>
 </if>

 <if test="map.flag == true and map.isEqual ==true">
 AND b.request_number = b.outstock_number
 </if>

 <if test="map.flag == true and map.isEqual ==false">
 AND b.request_number > b.outstock_number
 </if>


 <if test="map.markerId!=null">
 AND a.marker_id=#{map.markerId}
 </if>

 GROUP BY a.sales_order_id) c

可以统计出订单个数。

4.

select b.*, a.create_time AS s_create_time, a.sales_order_no, a.amount_tax_sum,
 a.sales_order_status_name, a.marker_date, a.checker_date,a.sales_order_id
 from b_sales_order a LEFT JOIN
 b_sales_order_detail b on a.sales_order_id = b.sales_order_id
 AND a.delete_flag =‘0‘ AND marker_id = 11

当我用左连接时候,发现订单表的数据全都在,当详情表的数据匹配不上时候,详情表所有字段为空。

极端情况,订单表一条纪录,详情表对应13条,那么进行左连接时候,发现有13条记录!在我们需要按详情表的字段作为搜索条件,查询结果为订单表时,

订单结果就重复了12条!因此,左连接不能乱用。

  综上,以上问题都是在实际项目中遇到的,也反映出对数据库知识的欠缺。要对  左连接、where、分组、统计、笛卡尔积这些数据库概念有清晰认识!

 

数据库遇到的问题

标签:tail   false   isequal   左连接   item   limit   数据库概念   foreach   动态   

热心网友 时间:2022-04-10 05:48

这个代码应该跑不起来的。 建立数据库这类比较复杂的操作基本没人用代码,建表倒是可以考虑下。再者,操作数据库用C不如用高级点的语言来的方便,你要自己写数据库连接驱动的除外。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
色彩中蓝色、红色、黄色除了加白色以外还有什么办法提高明度 色彩不敢调亮怎么办? 色彩如何提亮 男朋友惹我生气了 事后一点悔意也没 都在气头上 我不小心打男朋友了 他... 解签:为人处事莫亏心,暗室之中有灵应,一时得意反成失,半点悔改胜似金... 我手机之前一段时间由于欠费停机了 前几天我充了50元进去怎么还是... 撕名牌可以用哪些超能力技能? 为什么5孔插座带开关,安装好之后,灯有电,插座不通电? 怎么把照片内存变小 图片内存变小的方法 百度地图导航如何连接车蓝牙 百度地图导航连接车蓝牙方法 请问雅思考试作文答题纸上的examiner&#39;s use only 里的 TA,CC,LR,GRA,TR是什么意思?这些缩写的全称是什么 广汽乘用车的介绍 雅思试卷用的纸张是什么类型的? 岳阳楼记中的滕子京是什么样的人? 北宋时期,滕子京为什么要谪守巴陵郡? 2020,广汽乘用车轻装上阵高质量发展 雅思作文纸几张? 《岳阳楼记》滕子京和范仲淹是什么关系 范仲淹认识的一个叫什么子京 距离东莞市塘厦镇大坪市场最近的二甲医院、三甲医院在哪里? 雅思写作答题纸的第一页中最后一行没写,直接翻到了第二页开始写,考官会记得翻过来看吗? 滕子京在历史上到底是个什么样的人? 雅思英语考试中的作文题要是纸不够写怎么办? 东莞塘厦镇哪些医院可以用社保?生孩子可以用吗??? 岳阳楼记中的滕子京是什么人? 不以物喜,不以己悲的滕子京简介 亲们,在东莞塘厦有好点的妇科医院吗?我体检出患了卵巢囊肿,我想做下手术,有没有好的推荐啊? 雅思答题纸如何填写?详细说一下呗亲 广汽乘用车有限公司业主还是不是广汽公司? 东莞塘厦有没有看牙科好点的医院呢? 雅思答题纸介是A4大小的吗? 广汽乘用车公司是什么类型的公司 广汽包括哪些车 怎么折包装盒上的装饰花? 雅思作文写到作文纸的什么位置算够数 文言文《滕子京》全文翻译以及重点字注释 范仲淹对滕子京的态度是什么? 雅思大小作文在答题纸上的位置 进口顶级床垫品牌 【麻辣车评】广汽乘用车:没了爆款,下一步咋办? 欧洲进口床垫牌子有什么? 广汽乘用车紧急换帅,将会对车市有什么影响? 澳大利亚原装进口的床垫怎么样,有没有推荐的牌子啊~~在线等! 广汽乘用车和宇通客车哪个好 澳洲造梦者床垫怎么样? 澳洲比尔德床垫怎么样? 全球十大床垫品牌是什么?哪个牌子的质量更好点? 衣服染色剂能用吗 知乎 数据库中经常遇到哪些问题 基金从业资格证考试一年能考几次?