Как вывести таблицу с данными из 3 таблиц при помощи JOIN?

Т.е. у меня есть таблица Табл 1

Которую нужно вывести и вместе с ней данные ещё из трёх таблиц для столбцов - Марка, Кузов и Трансмиссия, таблицы одиночные кроме одной, той из которой нужно вывести данные для марки, она выглядит так - Табл 2

Отсюда соответственно нужно забрать данные по марке

Таблица кузова -

Табл 3

И таблица трансмиссии -

Табл 4

Ну и наконец сие чудо нужно вывести, а выводится оно у меня в таблицу из PyQt5, код -

    self.row_count = 1
    self.table_index = 0

    sqlite_connection = sqlite3.connect("Autosalon.db")
    cursor = sqlite_connection.cursor()

    sqlite_select_query = """SELECT * FROM Модификация"""
    cursor.execute(sqlite_select_query)
    records = cursor.fetchall()

    for row in records:
        self.tableWidget.setRowCount(self.row_count)
        self.tableWidget.setItem(self.table_index, 0, QtWidgets.QTableWidgetItem(str(row[0])))
        self.tableWidget.setItem(self.table_index, 1, QtWidgets.QTableWidgetItem(str(row[1])))
        self.tableWidget.setItem(self.table_index, 2, QtWidgets.QTableWidgetItem(str(row[2])))
        self.tableWidget.setItem(self.table_index, 3, QtWidgets.QTableWidgetItem(str(row[3])))
        self.tableWidget.setItem(self.table_index, 4, QtWidgets.QTableWidgetItem(str(row[4])))
        self.tableWidget.setItem(self.table_index, 5, QtWidgets.QTableWidgetItem(str(row[5])))
        self.tableWidget.setItem(self.table_index, 6, QtWidgets.QTableWidgetItem(str(row[6])))
        self.tableWidget.setItem(self.table_index, 7, QtWidgets.QTableWidgetItem(str(row[7])))
        self.tableWidget.setItem(self.table_index, 8, QtWidgets.QTableWidgetItem(str(row[8])))
        self.tableWidget.setItem(self.table_index, 9, QtWidgets.QTableWidgetItem(str(row[9])))
        self.tableWidget.setItem(self.table_index, 10, QtWidgets.QTableWidgetItem(str(row[10])))

        self.table_index += 1
        self.row_count += 1

    cursor.close()
    sqlite_connection.close()

Выводилось как-то так, но нужно выводить как было описано выше )))

Должно получиться -

Пабл 5

Схема связи -

Схема 1

Пробую такой запрос -

sqlite_select_query = """SELECT * FROM Модификация
                                LEFT JOIN Автомобили ON Модификация.Марка = Автомобили.id
                                LEFT JOIN Кузов ON Модификация.Кузов = Кузов.id 
                                LEFT JOIN Трансмиссия ON Модификация.Трансмиссия = Трансмиссия.id;"""

Но, он не подставляет нужные значения.


Ответы (1 шт):

Автор решения: Alex

Ваш вопрос не имеет отношения к питону, это чистый SQL. Насколько понимаю все что вам требуется, это добавить выбор колонок в запросе, который вы выполняете:

SELECT
  Модификация."Код Модификации",
  Модификация."Скорость",
  Модификация."Разгон",
  Модификация."Объем",
  Модификация."Мощьность",
  Модификация."Расход",
  Автомобили."Марка",
  Модификация."Стоимость",
  Кузов."Кузов",
  Трансмиссия."Трансмиссия"
FROM Модификация
LEFT JOIN Автомобили ON Модификация.Марка = Автомобили.id
LEFT JOIN Кузов ON Модификация.Кузов = Кузов.id 
LEFT JOIN Трансмиссия ON Модификация.Трансмиссия = Трансмиссия.id;
→ Ссылка