【问题标题】:Generating duplicate responses within a MySQL SELECT query在 MySQL SELECT 查询中生成重复响应
【发布时间】:2011-04-08 01:45:38
【问题描述】:

我正在使用应用程序中的报告编写功能来生成条形码产品标签。

报告编写系统允许我使用 MySQL SELECT 语句从我们的数据库中获取我需要的信息,并将其呈现给一个 Jasper Reports JRXML 文件,该文件格式化报告。

如果我想为我的 SELECT 语句从数据库返回的每个产品生成一个条形码标签,这很好用。但是,我想为每个产品标签制作 50 份。

如果我可以访问代码就很容易了,但我只能更改 SQL 语句。

谁能提出一种方法,让我可以让 MySQL SELECT 语句为它在 products 表中找到的每条记录返回 50 个相同的结果?

感谢您的帮助。

【问题讨论】:

  • Hmmmm... 没有办法想到,虽然我确定有一个(mySQL 大师会整理出来)。但是,这在应用程序级别会更好。您是否 100% 确定 Jasper Reports 或应用程序本身没有本地方式来执行此操作?

标签: mysql select duplicates


【解决方案1】:

我只有一个丑陋的解决方案,假设您可以修改架构:创建一个包含 50 条记录的虚拟表,并将其加入您的 sql 查询中,如下所示:select * from products, dummyWith50Records

写这样的东西我几乎是可耻的,但它应该可以工作......希望有人有更好的解决方案。

【讨论】:

  • 我无权访问该应用程序,但可以创建一个虚拟表。有一种将参数传递给 SQL 语句的机制,所以我希望能够指定标签的数量并将其嵌入到 SQL 语句中。但是,虚拟表会起作用,所以除非有人有任何其他想法,否则我会继续使用它。感谢您的帮助。
  • 不知道为什么我在这里投了反对票。我仍然没有看到任何更好的解决方案。
  • 这不是一个丑陋的解决方案。使用其中只有数字的辅助表是解决许多查询问题的一种非常方便的方法。请参阅此处的讨论:sqlserver2000.databases.aspfaq.com/…
【解决方案2】:

针对动态表的交叉连接,其中包含您想要的重复行数。

SELECT t.* 
FROM table t 
JOIN (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) dud 
WHERE t.field = 'condition'

在这种情况下,table 中每个符合条件的行都有 5 个重复项。

它并不漂亮,但它可以工作,并且不需要创建一个真实的表。

【讨论】:

    【解决方案3】:

    我能够理解您的问题...但是举个例子对我会更有帮助...

    我认为我在我的一个应用程序中做了同样的事情

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多