SQL noob, пожалуйста, потерпите меня !!
Я храню 3 кортежа в базе данных (x, y, {signal1, signal2, ..}).
У меня есть база данных с таблицами координат (x, y) и другой таблицей сигналов (signal, координата_ид, группа), в которой хранятся значения отдельных сигналов. В одной и той же координате может быть несколько сигналов.
Группа - это просто случайное целое число, которое помечает записи в таблице сигналов как принадлежащие к одному и тому же набору (при условии, что они принадлежат к одной и той же координате). Таким образом, любые сигналы с одинаковыми координатами и группой образуют кортеж, как показано выше.
Например,
Coordinates table Signals table
-------------------- -----------------------------
| id | x | y | | id | signal | coordinate_id | group |
| 1 | 1 | 2 | | 1 | 45 | 1 | 1 |
| 2 | 2 | 5 | | 2 | 95 | 1 | 1 |
| 3 | 33 | 1 | 1 |
| 4 | 65 | 1 | 2 |
| 5 | 57 | 1 | 2 |
| 6 | 63 | 2 | 1 |
Это приведет к созданию кортежей (1,2 {45,95,33}), (1,2, {65,57}), (2,5, {63}) и т. Д.
Я хотел бы получить наборы {signal1, signal2, ...} для каждой координаты. Сигналы, принадлежащие к набору, имеют одинаковые координаты и группу , но я не обязательно знаю значение группы . Я только знаю, что если значение группы одинаково для определенного координаты_идентификатора, то все те, у кого эта группа, образуют один набор.
Я попытался изучить SQL GROUP BY
, но понял, что он предназначен для использования с агрегатными функциями.
Может ли кто-нибудь указать, как это правильно сделать в SQL, или дать советы по улучшению структуры моей базы данных.