Ожидаемый результат, который вы показываете в своем вопросе, на самом деле не является действительной таблицей. Ваш результирующий набор не может состоять из переменного количества столбцов. Кажется, вы хотите получить результат, который содержит столбец для каждой категории.
Что вы можете сделать с JOIN это что-то вроде этого (предполагается, что таблицы имена categories
и subcategories
):
SELECT categories.cat_title, subcategories.subcat_title
FROM categories INNER JOIN subcategories
ON categories.cat_id = subcategories.cat_id
, который даст вам набор результатов, как это:
cat_title subcat_title
=============================
cat_1 subcat_2
cat_1 subcat_3
cat_2 subcat_1
cat_2 subcat_4
В ваш клиентский код, вы можете работать с этим набором результатов и создавать словарь или что-то другое, соответствующая структура данных для ваших нужд, чтобы собрать результат, в котором вы нуждаетесь.
Простой пример того, как использовать набор результатов для построения словаря с использованием SqlDataReader
:
Dictionary<string,List<string>> result = new Dictionary<string, List<string>>();
/* suppose we have a SqlCommand command with the query from above */
using (SqlDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
string cat = reader.GetString(0);
if (!result.ContainsKey(cat))
result.Add(cat, new List<string>());
result[cat].Add(reader.GetString(1));
}
}
Спасибо. Он работает – Avim
@AvinashMulewa: действительно? Но вы делаете что-то еще в своем вопросе – AnatolyS
да Это не тот же результат, но результат может решить мою проблему – Avim