【问题标题】:Need help in generating rows in database在数据库中生成行时需要帮助
【发布时间】:2014-04-28 14:37:21
【问题描述】:

我的数据库中有一个这样的表

HatID   HatName    HatPrice     LowestStock     HighestStock     Count
________________________________________________________________________

ERA      New Era     $25.99        1               5              -
STA      Starter     $20           1               5              -

但是,我想实现这样的表,

HatID           HatName    HatPrice   LowestStock  HighestStock   Count
________________________________________________________________________

ERA000001       New Era     $25.99        1               5        1

ERA000002       New Era     $25.99        1               5        2

ERA000003       New Era     $25.99        1               5        3 

ERA000004       New Era     $25.99        1               5        4

ERA000005       New Era     $25.99        1               5        5 

STA000001       Starter     $20           1               5        1

STA000002       Starter     $20           1               5        2 

STA000003       Starter     $20           1               5        3 

STA000004       Starter     $20           1               5        4 

STA000005       Starter     $20           1               5        5 

我知道您不能在 SQL Schema 中编写代码,但我很好奇如何在 Java 中编写代码

如何用 Java 编写代码?

我想要一个像后者这样的表的原因,以便在我进行销售后,我可以删除与该购买相关的 HatID。

【问题讨论】:

  • 根据您希望该行重复的最高库存编号
  • @NidhishKrishnan 是的,我想生成lowestStock 和highestStock 之间的所有记录
  • 为什么要这样做 - 我的意思是在最低库存和最高库存之间生成计数。卖出后删除一条记录将没有任何意义。如果您使用股票分区,您应该为每顶帽子使用一些特殊的特征 - 例如派对数量(ERA000001),其中计数将是 - 当前派对中的帽子数量。当其中一顶帽子要出售时,您需要减少当前聚会的人数等等。
  • @MikkaRin 我该如何实现这个?我是如此如此如此困惑:S。我对这一切都不熟悉
  • 嘿,如果您有一个名为 TableA 的表具有前两行数据.....您的意思是您想要另一个具有相同架构结构的 TableB,您希望在其中显示所有这些计数值

标签: java mysql sql jdbc schema


【解决方案1】:

为此,您可以采用两种方法:

  1. 手动插入数据。
  2. 在 java 中编写一个方法,该方法将采用所有这些参数,并将使用Insert Into SQl 查询插入表中。因此,您不必编写多个插入查询。

【讨论】:

  • 嗨,是的,我想用 Java 编写它,但我不知道如何去做 :(。我是所有这些编程的新手,我正在努力学习有兴趣。
【解决方案2】:

您需要创建一个数字表并与源表连接。最好创建一个包含100个数字的数字表

create table numbers(number);
insert into numbers
select 1 union all select 2 union all
select 3 union all select 4 union all
select 5;


select 
    t1.HatID   , t1.HatName    ,t1.HatPrice     ,t1.LowestStock     
   ,t1.HighestStock     
   ,t2.number
from 
    your_table as t1 inner join numbers as t2 
    on t2.number>=t1.LowestStock and t2.number<=t1.HighestStock;

【讨论】:

  • 我不明白你的代码。对不起。我在 SQL Fiddle 中尝试过,但出现错误。另外我在哪里写这段代码?在 Java 中? SQL?
  • 你应该在 SQL 中试试这个。还将 your_table 更改为实际的表名
  • 创建表编号(编号)呢?为什么我什至需要那张桌子?如果是这样,主键是什么?什么是选择1,选择2?如果你能为我的例子写一个,我将不胜感激。这意味着很多
  • 另外,您的代码最多只能选择 5 个数字,并且不会创建复合键……我现在迷路了。我没用:(
  • numbers 表是一次性创建表。您只需要将该表与原始表连接即可生成多行。它创建一个包含五行数字从 1 到 5 的表格
猜你喜欢
  • 2017-05-07
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 2015-01-25
  • 2017-11-17
  • 2021-10-05
相关资源
最近更新 更多