Случайные таблицы SQL - PullRequest
0 голосов
/ 02 июня 2011

Я хочу реализовать раскраску графа с использованием баз данных.

Существует таблица, в которой будут храниться все вершины (1,2,3 ...), и таблица, в которой хранятся названия всех цветов (красный, синий, зеленый и т. Д.).

Теперь нужно создать таблицу раскраски со столбцами вершины и цвета, которая будет принимать все возможные комбинации из приведенных выше таблиц, а затем проверять ограничения в каждой из этих таблиц. Какая бы таблица не удовлетворяла ограничениям окраски графа, это решение.

Теперь, как создавать таблицы для каждой комбинации ??

Ребята помогите пожалуйста. Застрял на нем какое-то время ...

Пример экземпляра:

вершина 1 2 3

Цвет красный синий

окраска а) 1 красный 2 синих 3 красных б) 1 красный 2 красных 3 синих с) 1 синий 2 красных 3 красных , , , 6 столов

Ответы [ 2 ]

0 голосов
/ 02 июня 2011

Я не уверен, что понимаю ваш вопрос, поэтому сделаю некоторые предположения. Предполагая, что у вас есть таблица с именем Vertex со следующими строками:

1
2
3

... и таблица с именем Color, со следующими строками:

Red
Green
Blue

... вы можете сгенерировать таблицу всех возможных комбинаций с помощью простого неограниченного объединения, например:

ВЫБРАТЬ * INTO VertexColor ОТ ВЕРХЕКС, Цвет

Результатом будет новая таблица со следующими строками:

1, Red
1, Green
1, Blue
2, Red
2, Green
2, Blue
3, Red
3, Green
3, Blue

Рад помочь, если это не поможет ответить на ваш вопрос.

0 голосов
/ 02 июня 2011
SELECT Vertices.vertex, Colors.Color from Vertices
CROSS JOIN Color from Colors

РЕДАКТИРОВАТЬ: Просмотр новых комментариев: Это не похоже на проблему, которая хорошо подходит для SQL, главным образом потому, что количество столбцов в вашем наборе результатов зависит от количества строк в таблице вершин.Это не то, что легко в SQL (вам, вероятно, нужен многошаговый процесс, использующий динамический sql через sp_execute).Так как порядок столбцов имеет значение, вы не можете вернуть набор результатов, содержащий только каждую пару вершина - цвет, потому что порядок, в котором возвращаются строки, может отличаться.Для меня это звучит так, как будто проблема лучше решается вне ядра базы данных.Вы все еще можете использовать вышеуказанное перекрестное соединение, чтобы получить предварительный набор данных, в котором вы отфильтровываете некоторые условия, которые есть в наборе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...