MySql - Erstellt eine Ansicht zum Lesen aus mehreren Tabellen

Ich habe einige alte Werbebuchungen für Rechnungen archiviert, die nicht mehr aktuell sind, aber dennoch referenziert werden müssen. Ich denke, ich muss eine ANSICHT erstellen, verstehe sie aber nicht wirklich. Kann mir jemand helfen, damit ich eine Abfrage ausführen kann, um die Rechnung und dann die Summe aller zugeordneten Werbebuchungen zu ziehen (egal in welcher Tabelle sich die Werbebuchungen befinden)?

CREATE TABLE `Invoice` (
  `Invoice_ID` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `Invoice_CreatedDateTime` DATETIME DEFAULT NULL,
  `Invoice_Status` ENUM('Paid','Sent','Unsent','Hold') DEFAULT NULL,
  `LastUpdatedAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`ID`),
  KEY `LastUpdatedAt` (`LastUpdatedAt`)
) ENGINE=MYISAM DEFAULT CHARSET=latin1

CREATE TABLE `Invoice_LineItem` (
  `LineItem_ID` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `LineItem_ChargeType` VARCHAR(64) NOT NULL DEFAULT '',
  `LineItem_InvoiceID` INT(11) UNSIGNED DEFAULT NULL,
  `LineItem_Amount` DECIMAL(11,4) DEFAULT NULL,
  `LastUpdatedAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`LineItem_ID`),
  KEY `LastUpdatedAt` (`LastUpdatedAt`),
  KEY `LineItem_InvoiceID` (`LineItem_InvoiceID`)
) ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

CREATE TABLE `Invoice_LineItem_Archived` (
  `LineItem_ID` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `LineItem_ChargeType` VARCHAR(64) NOT NULL DEFAULT '',
  `LineItem_InvoiceID` INT(11) UNSIGNED DEFAULT NULL,
  `LineItem_Amount` DECIMAL(11,4) DEFAULT NULL,
  `LastUpdatedAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`LineItem_ID`),
  KEY `LastUpdatedAt` (`LastUpdatedAt`),
  KEY `LineItem_InvoiceID` (`LineItem_InvoiceID`)
) ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

ormalerweise würde ich einfach die folgende Abfrage ausführen, um den fälligen Betrag auf den Rechnungen zu erhalte

SELECT
    Invoice_ID,
    Invoice_CreatedDateTime,
    Invoice_Status,
    (SELECT SUM(LineItem_Amount) AS totAmt FROM Invoice_LineItem WHERE LineItem_InvoiceID=Invoice_ID) AS Invoice_Total
FROM
    Invoice
WHERE
    Invoice_Status='Sent'

Auch wie kann ich alle Positionen aus beiden Tabellen in einer Abfrage auswählen?

SELECT
    LineItem_ID,
    LineItem_ChargeType,
    LineItem_Amount
FROM
    Invoice_LineItem
WHERE
    LineItem_InvoiceID='1234'

Antworten auf die Frage(2)

Ihre Antwort auf die Frage