У меня есть база данных с вложенной иерархической структурой.На верхних уровнях иерархии нет никаких фактических typeID (отдельных элементов), связанных с данным marketGroupID .
Вместо этого я начинаю сверху, используя поиск по строке, чтобы найти нужные категории.Мне нужно продолжать идти вниз по иерархии, используя marketGroupIDs , которые я выбрал в качестве parentGroupIDs для следующего поиска, чтобы найти все идентификаторы в этой подкатегории.Это будет делиться на несколько подкатегорий, пока столбец hasTypes = 1 (с этой подкатегорией связаны идентификаторы типов).
Пока я работаю над очень ручным вариантом: продолжайте поиск до тех пор, покаЯ добираюсь до нужного мне уровня, есть ли способ построить цикл, который поддерживает SELECTING на основе WHERE marketGroupID X = parentGroupID Y и hasTypes = 0?
РУЧНОЙ МЕТОД, КОТОРЫЙ Я ПЫТАЮСЯ ЗАМЕНИТЬ
Столбцами, с которыми я в основном работаю, являются marketGroupID и parentID.До сих пор я пытался использовать c.fetchall (), чтобы получить предыдущий результат и поместить его в переменную next_input.Тогда я использую параметр '?'используя sqlite3 в Python.Проблема в том, что количество входов может изменяться, так как предыдущий оператор SELECT предоставит мне список кортежей длиной от шестидесяти до нескольких сотен.
c.execute("""SELECT marketGroupID FROM invMarketGroups WHERE parentGroupID IN (SELECT marketGroupID FROM invMarketGroups WHERE marketGroupName='Ships'
OR marketGroupName = 'Ship Equipment' OR marketGroupName = 'Implants & Boosters')""");
Следующий шаг поиска.
python
next_input = c.fetchall()
Итак, потратив время на то, чтобы сделать их равными длине списка, мне удалось заставить его работать, превратив результат в один список:
next_input = [i[0] for i in next_input]
c.execute("SELECT marketGroupID FROM invMarketGroups WHERE parentGroupID IN ({idlist_formatted})".format(idlist_formatted= ','.join(['?']*len(next_input))), next_input)
Как сделать цикл так, чтобы он продолжал работать рекурсивно, и заканчивается до hasTypes! = 0, захватывая marketGroupIDs, где hasTypes = 1?