jjzjj

mysql - 是否可以显示空白而不是重复的行单元格信息?

coder 2023-10-24 原文

我有一份按特定 ID 分组的报告,这意味着某些信息必然是重复的。在这种情况下,每个引用号都有多个与之关联的专利记录。因此,如果有 4 项专利,它会正确返回 4 行,但引用 ID、提交日期和标题将在所有 4 行上重复,而其他列显示唯一信息。

是否可以在第 2-4 行返回空白,以便我只看到一次“公共(public)”信息?

这是我目前看到的。

Reference-1    July 1, 2019    Title here    Acme, Inc.    ABCD-1234  Patent 1
Reference-1    July 1, 2019    Title here    Acme, Inc.    ABCD-1234  Patent 2
Reference-1    July 1, 2019    Title here    Acme, Inc.    ABCD-1234  Patent 3
Reference-1    July 1, 2019    Title here    Acme, Inc.    ABCD-1234  Patent 4

是否可以让它返回这个?我想要返回相同的行,只是没有重复的值。

 Reference-1    July 1, 2019    Title here    Acme, Inc.    ABCD-1234  Patent 1
                                                                       Patent 2
                                                                       Patent 3
                                                                       Patent 4

这是我的代码的当前版本:

SELECT
i.reference_id AS "Reference Number",
i.submission_dt AS "Submission Date",
i.title AS "Title",
o.name AS "Sponsor",
o.grant_number AS "Grant Number",
p.patent_id AS "IP Reference"


FROM 
invention i
LEFT OUTER JOIN
organization2invention o2i ON o2i.invention_id = i.invention_id
LEFT OUTER JOIN
organization o ON o2i.organization_id = o.organization_id
LEFT OUTER JOIN
patent2invention pt2i ON pt2i.invention_id = i.invention_id
LEFT OUTER JOIN
patent p ON pt2i.patent_id = p.patent_id


WHERE
o.grant_number = "ABCD-1234"

group by p.patent_id
order by i.reference_id

ETA:在这个例子中,专利 3 和专利 4 之间的标题永远不会改变。除了专利列之外的所有列都被链接并保持不变。

然而,Reference-2 可能还有另一组记录,我希望所有字段都显示 Reference-2 第一次出现的时间,但其他时间不显示。

Reference-1    July 1, 2019    Title here    Acme, Inc.    ABCD-1234  Patent 1
                                                                      Patent 2
                                                                      Patent 3
                                                                      Patent 4     

Reference-2    July 1, 2019    Title here    Acme, Inc.   ABCD-1234   Patent 5
                                                                      Patent 6
                                                                      Patent 7
                                                                      Patent 8

版本 5.7.22

ETA2:我正在使用非常糟糕的用户界面从基于网络/云的数据库中提取数据。他们构建了一个页面,该页面有一个用于 MySQL 代码的输入框和一个显示“运行查询”的按钮,例如他们的界面没有按照我们需要的方式提供数据。我只有只读权限,它们的显示不能识别某些东西(如 \n),并且它有一些内置的格式标签(类似于 my_object_id AS "My Object| display_name:MyObject").

当我单击“运行查询”时,网页的底部返回显示。

此功能旨在用作“自定义报告”,因此显示很重要。除了直接使用 MySQL 代码之外,他们只是没有给我提供执行此操作的方法。

最佳答案

This answer will not output perfect layout because layout is not something SQL is built to deal with. As stated by Strawberry - "consider handling issues of data display in application code instead"

...

操作状态:

I'm limited to a text input box for mysql code with read only access to the data.

所以 MySQL View 是不可能的,显示输出处理器(PHP 等)可能对结果进行整理是一个未知变量。

OP 还指出:

All of the columns except for the Patent column are linked and would remain the same

所以;

尝试扭转问题;您想要一个包含大量专利 数据迭代的完整 结果。你可以这样做 using GROUP_CONCAT在更改列上,patent_id 列。您还必须选择引用列的 DISTINCT 值,但是为获得所需结果而进行的 SQL SELECT 编辑相当少:

SELECT
DISTINCT i.reference_id AS "Reference Number",
i.submission_dt AS "Submission Date",
i.title AS "Title",
o.name AS "Sponsor",
o.grant_number AS "Grant Number",
GROUP_CONCAT(p.patent_id SEPARATOR '\\n') AS "IP Reference"

FROM 
invention i
LEFT OUTER JOIN
organization2invention o2i ON o2i.invention_id = i.invention_id
LEFT OUTER JOIN
organization o ON o2i.organization_id = o.organization_id
LEFT OUTER JOIN
patent2invention pt2i ON pt2i.invention_id = i.invention_id
LEFT OUTER JOIN
patent p ON pt2i.patent_id = p.patent_id

WHERE
o.grant_number = "ABCD-1234"

GROUP BY i.reference_id,
ORDER BY i.reference_id

这将导致一组包含“引用 1”的行,例如,所有不同的 p.patent_id 值的 GROUP CONCAT 与之关联引用,在本例中由换行符分隔。

\n 是一个标准的换行符(在 MySQL 中转义为 \\n)。您可以根据需要调整此 SEPERATOR

您没有给我们任何关于您的显示机制的线索,但是可能您可以插入任何您喜欢的东西,甚至是 HTML 到 SEPERATOR 子句中;如果您要输出到 HTML 表格中。

  GROUP_CONCAT(p.patent_id SEPARATOR 
      '</td></tr><tr><td colspan="5">&nbsp;</td><td>') AS "IP Reference"

您还可以使用 DISTINCT 子句从专利列表中删除重复项。

Reference

输出:

Reference-1  July 1, 2019  Title here  Acme, Inc.  ABCD-1234  Patent 1
                                                              Patent 2
                                                              Patent 3
                                                              Patent 4     

Reference-2  July 1, 2019  Title here  Acme, Inc.  ABCD-1234   Patent 5
                                                               Patent 6
                                                               Patent 7
                                                               Patent 8

关于mysql - 是否可以显示空白而不是重复的行单元格信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56839163/

有关mysql - 是否可以显示空白而不是重复的行单元格信息?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  3. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  4. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  5. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  6. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  7. ruby - 我可以使用 Ruby 从 CSV 中删除列吗? - 2

    查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

  8. ruby - 检查数组是否在增加 - 2

    这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife

  9. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  10. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

随机推荐