Вы хотите, чтобы 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;
Если Вы заказываете записи, как правило, это не должен быть чем-то произвольным (если только этот произвольный порядок не был выбран специально пользователем, например, сортировка элементов в списке дел). Обычно вы сортируете какое-то «естественное» свойство данных, например, дату, когда оно было добавлено или в алфавитном порядке по имени и т. Д.
NB: Этот ответ предназначен для псевдокода SQL - убедитесь, что вы его адаптируете к вашему синтаксису конкретной базы данных, прежде чем вы его вбрасываете в скрипт. (И не забудьте добавить некоторые ключи и индексы!)
Кажется несколько обратным от того, к чему я привык, элементы относятся к их основному классу, а не наоборот, но я думаю, это имеет смысл в странном вид пути. – Lalaland