可以将另一个表作为表中的一行引用吗?
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 中,您几乎可以在任何可以使用表达式的地方创建子查询。但它必须返回一个值。
您可以在FROM
或JOIN
之后使用作为子查询的“派生表”作为类似表的东西。
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
。
“潜艇”是在海底航行的船只。或者它们是海底形状的三明治。所以我不知道它们与发票有什么关系。以上是关于可以将另一个表作为表中的一行引用吗?的主要内容,如果未能解决你的问题,请参考以下文章
SQL UPDATE SET 一列等于另一列引用的相关表中的值?