我有一個表需要每一行來存儲相同類型的行的有序集合。什麼是SQL中數組的等價物?
例如,我想象類似的東西:
class blah
{
float yetMoreData;
};
class foo
{
int data;
String moreData;
blah[] anOrderedCollectionOfBlahClasses;
};
什麼是實現這一目標的最佳方式是什麼?
我有一個表需要每一行來存儲相同類型的行的有序集合。什麼是SQL中數組的等價物?
例如,我想象類似的東西:
class blah
{
float yetMoreData;
};
class foo
{
int data;
String moreData;
blah[] anOrderedCollectionOfBlahClasses;
};
什麼是實現這一目標的最佳方式是什麼?
您希望Blah
和Foo
爲單獨的表格,其中Blah
與Foo
具有多對一的關係。 Blah
表中的記錄應該有一個外鍵foo_id
,標識它們的父Foo記錄。 Blah
還具有允許對結果進行排序的index_in_array
屬性。
CREATE TABLE Foo (
id BIGINT,
data INT,
moreData CHAR(50)
);
CREATE TABLE Blah (
id BIGINT,
yetMoreData DOUBLE,
foo_id BIGINT,
index_in_array INT
);
如果你想獲得的所有Blah
個給Foo
(比如說,在Foo
與5號),使用:
SELECT * FROM Blah
WHERE Blah.foo_id = 5
ORDER BY Blah.index_in_array;
如果你訂購的記錄,通常它不應該受到任何東西的武斷(除非該用戶專門選擇了任意順序,例如,將待辦事項列表上的項目排序)。通常情況下,您可以根據數據的某些「自然發生」屬性進行排序,例如添加日期或按名稱的字母順序排序等。
注意:此答案旨在爲僞代碼SQL - 確保您適應它在將其轉換爲腳本之前,將其添加到特定的數據庫語法中。 (並且不要忘記添加一些鍵和索引!)
數據庫通常不會按特定順序存儲事物。您可以通過多種方式從數據庫中檢索事物。例如,假設你有一個表日曆:
CREATE TABLE month AS (
id NUMBER,
month NUMBER,
day NUMBER
);
然後,您可以找回當年的日子依次是:
SELECT month, day
FROM calendar
ORDER BY month, day;
話雖這麼說,有辦法做你問。例如,Oracle可以存儲嵌套表。
您創建兩個表並在它們之間創建主鍵和外鍵關係。它將被視爲嵌套表格和每個嵌套對象。
似乎有點從我習慣的倒退,元素引用他們的主類而不是相反的方式,但我想這是有道理的一個奇怪的排序方式。 – Lalaland