Помощь Построение SQL-запроса - PullRequest
1 голос
/ 07 октября 2010

У меня есть следующие 2 таблицы

Channels:
Id int PK
Title varchar

SubChannels:
ChannelId int
SubchannelId int

Когда я получаю данные из службы, я пытаюсь сохранить их в SQL. Я получаю несколько экземпляров Channel, поэтому сохраняю их в таблице Channels, после чего я пытаюсь сохранить каждый подканал (каждый канал содержит список подканалов), поэтому я сохраняю подканалы в одной и той же таблице Channels и сохраняю их идентификаторы в Таблица SubChannel следующим образом: ChannelId - SubChannelId.

Итак, мне нужно получить это дерево каналов одним запросом Я пытаюсь сделать это с помощью этого запроса:

 SELECT * FROM Channels 
 EXCEPT 
 SELECT Channels.Id, Channels.Title 
 FROM Channels INNER JOIN SubChannels 
 ON Channels.Id = SubChannels.SubchannelId

Но я не работаю правильно. Использование MSSQL работает нормально, но в моем SQLite что-то идет не так.

Не могли бы вы помочь мне с этим запросом или посоветовать мне другое решение для сохранения этого дерева в SQL.

Мой класс Channel выглядит так:

int Id
string Title
List<Channel> SubChannels

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Не могли бы вы попробовать:

SELECT Id, Title
  FROM Channels
EXCEPT 
SELECT Channels.Id, Channels.Title
  FROM Channels
 INNER JOIN SubChannels
    ON Channels.Id = SubChannels.SubchannelId

(т.е. не выбирая *)

Способ его оптимизации:

SELECT Id, Title
  FROM Channels
 WHERE Id NOT IN (
       SELECT DISTINCT SubchannelId
         FROM SubChannels
    )
0 голосов
/ 07 октября 2010

SQLite не поддерживает, КРОМЕ

. Поэтому вы можете попробовать:

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