2016-05-16 4 views
0

У меня есть две таблицы в SQLite одной таблицы содержит основные категории, а другой является подкатегориюОбъединение двух таблиц в SQLite

------------------ 
cat_id | cat_title 
    1 | cat_1 
    2 | cat_2 
------------------ 

----------------------------------- 
    subcat_id | subcat_title | cat_id 
    1  | subcat_1 | 1 
    2  | subcat_2 | 2 
    3  | subcat_3 | 2 
    4  | subcat_4 | 1 

Ожидаемый результат

----------------------------------- 
     cat_1  | cat_2 
    subcat_2  | subcat_1 
    subcat_3  | subcat_4 

может любой приятель говорит мне запрос.

ответ

0

Позволяет вызвать основную таблицу table1 и вторую таблицу table2.

SELECT table2.subcat_title, table1.cat_title FROM table2 INNER JOIN on table1.cat_id=table2.cat_id 
+0

Спасибо. Он работает – Avim

+0

@AvinashMulewa: действительно? Но вы делаете что-то еще в своем вопросе – AnatolyS

+0

да Это не тот же результат, но результат может решить мою проблему – Avim

0

Предположим, что ваша вторая таблица имеет поле Ord (порядок), означающие порядок среди основных категорий таблицы

------------------------------------------- 
    subcat_id | subcat_title | cat_id | ord 
    1  | subcat_1 | 1 | 1 
    2  | subcat_2 | 2 | 1 
    3  | subcat_3 | 2 | 2 
    4  | subcat_4 | 1 | 2 

Также у вас есть Ord (порядок), который может охватить все подкатегории

------------- 
    ord 
    1  
    2  
    3  
    4  
    ... 
    10000  

В таком случае вы можете решить задачу:

select 
    (select subcat_title from subcat where subcat.catid = 1 and subcat.ord = ord.ord) as subcat_for_cat1, 
    (select subcat_title from subcat where subcat.catid = 2 and subcat.ord = ord.ord) as subcat_for_cat2 
from ord 

http://www.sqlfiddle.com/#!7/0e54c/2

0

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

Что вы можете сделать с 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)); 
    } 
} 
Смежные вопросы