可以将另一个表作为表中的一行引用吗?

Posted

技术标签:

【中文标题】可以将另一个表作为表中的一行引用吗?【英文标题】:Possible to reference another table as a row in a table? 【发布时间】:2019-02-14 12:58:33 【问题描述】:

我有一个名为 Payments 的表,还有一个名为 Invoices、Subs、Licenses 的表。

是否可以在 Payments 中添加对这些表格的引用?会产生这种情况的东西

result => CREATE TABLE Payments (
      Invoices table,
      Subs table
    )

我的想法与将对象放入其他语言的数组中的方式相同。

编辑:我使用 mysql。基本上,我想使用一个名为 Payments 的类将它们映射到 Java,并且想知道我是否可以在 db 服务器端执行此操作。否则我将不得不弄清楚如何在 Javaclass 中映射所有这些。我现在想的可能更容易

【问题讨论】:

这里可能是 XY 问题。 PostgreSQL 支持数组。大多数 RDBMS 可以将表变量用作过程的一部分,但不能用作列。你要达到的最终目标是什么?您还可以编辑帖子并添加您正在使用的 RDBMS 吗? 【参考方案1】:

在 MySQL 中,您几乎可以在任何可以使用表达式的地方创建子查询。但它必须返回一个值。

您可以在FROMJOIN 之后使用作为子查询的“派生表”作为类似表的东西。

VIEW 可能会更好地处理您输入的内容:

CREATE VIEW Results AS
    SELECT i.*, s.*
        FROM Invoices AS i
        JOIN Subs AS s  ON i.foo = s.foo

(其中foo 是用于将这两个表关联在一起的列。)

【讨论】:

对此要非常小心,就好像在 subs 和 invoices 之间没有直接的 FK 关系一样,您最终会得到一个多对多联接,您可以在其中获取每个 subs 的每张发票。例如,如果一个客户同时拥有许多子订单和许多发票,则不能是 sub.customer=invoice.customer “潜艇”是在海底航行的船只。或者它们是海底形状的三明治。所以我不知道它们与发票有什么关系。

以上是关于可以将另一个表作为表中的一行引用吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将EXCEl中多张Sheet工作表转换成一个PDF

在 PL/SQL 中的选择查询中引用数组元素

SQL UPDATE SET 一列等于另一列引用的相关表中的值?

如何将数据插入到sql server中的自引用表中? [复制]

Mysql 性能:IP 直接作为 BINARY 或通过引用

如何将存储在引用表中的引用值插入到另一个表中?