SQLite: упорядочить объединенную таблицу и рассчитать индекс - PullRequest
0 голосов
/ 15 апреля 2020

У меня MySQL таких таблиц:

  • MainTable - с идентификатором столбца, именем, включено
  • IntermediateTable1 - с идентификатором столбца, MainTable_FK, TableA_FK
  • IntermediateTable2 - с идентификатором столбца, MainTable_FK, TableB_FK
  • IntermediateTable3 - с идентификатором столбца, MainTable_FK, TableC_FK
  • TableA - с идентификатором столбца, именем
  • TableB - с идентификатором столбца, именем
  • TableC - с идентификатором столбца, именем

Основная цель - SELECT все enabled Форма данных MainTable объединяется с этими 3 промежуточными таблицами и Table A, B и C, и сортируется по столбцу name в TableC. Данные должны быть извлечены с 20 строками.

Я пробовал так:

SELECT *
FROM MainTable 
LEFT JOIN IntermediateTable1 ON MainTable.id = IntermediateTable1.MainTable_FK 
LEFT JOIN IntermediateTable2 ON MainTable.id = IntermediateTable2.MainTable_FK 
LEFT JOIN IntermediateTable3 ON MainTable.id = IntermediateTable3.MainTable_FK 
LEFT JOIN TableA ON IntermediateTable1.TableA_FK = TableA.id
LEFT JOIN TableB ON IntermediateTable2.TableB_FK = TableB.id
LEFT JOIN TableC ON IntermediateTable3.TableC_id = TableC.id
WHERE (MainTable.enabled <> 0) 
GROUP BY MainTable.id 
ORDER BY TableC.name DESC LIMIT 0, 20;

и:

SELECT DISTINCT *
FROM MainTable 
LEFT JOIN IntermediateTable1 ON MainTable.id = IntermediateTable1.MainTable_FK 
LEFT JOIN IntermediateTable2 ON MainTable.id = IntermediateTable2.MainTable_FK 
LEFT JOIN IntermediateTable3 ON MainTable.id = IntermediateTable3.MainTable_FK 
LEFT JOIN TableA ON IntermediateTable1.TableA_FK = TableA.id
LEFT JOIN TableB ON IntermediateTable2.TableB_FK = TableB.id
LEFT JOIN TableC ON IntermediateTable3.TableC_id = TableC.id
WHERE (MainTable.enabled <> 0) 
ORDER BY TableC.name DESC LIMIT 0, 20;

, но это не работает должным образом.

Как рассчитать индекс строки как одну строку, если MainTable.id=1 имеет два или более TableC.name s в результате?

...