[FIXED] Abrufen von Werten aus mehreren Tabellen in einer Spalte

Ausgabe

Nehmen wir an, ich habe drei Tabellen:

Tischbestellungen:

Rechnungs_ID Kundennummer
202201 1000
202202 2000
202203 3000
202204 4000

Tabelle Abteilung_Nord

Kundennummer Produkt Preis
4000 VW Hase $5000,00
1000 BMW X5 15.000 $

Tabelle Abteilung_Süd

Kundennummer Produkt Preis
3000 Tesla S $30.000
2000 BMW X3 $20.000

Gesuchtes Ergebnis

Eine Tabelle mit bill_id, eine neue Spalte mit allen Autos, die ‘%BMW%’ enthalten, eine neue Spalte mit dem angehängten Preis

Rechnungs_ID produkt_bmw preis_bmw
202201 BMW X5 $5.000
202202 BMW X3 $20.000

Ich habe herausgefunden, wie ich die Ergebnisse für eine Abteilungstabelle erhalten kann, kann aber keine Aussage für beide finden.

    SELECT DISTINCT orders.invoice_ID, 
                    department_north.product AS product_BMW,
                    department_north.price   AS price_BMW
    FROM orders
    JOIN LEFT department_north
       ON department_north.customer_ID = order.customer_id
    JOIN LEFT department_south
       ON department_south.customer_ID = order.customer_id
    WHERE department_north.product LIKE '%BMW%'

Lösung

Ich würde union all wie die Antwort von Paweł Dyl oben verwenden, aber eine einzelne Abteilungstabelle erstellen und eine zusätzliche Spalte mit dem Namen Standort oder ähnliches erstellen und ein „S“ für Süden und ein „N“ für Norden wie folgt einfügen:

create table #department
(
    customer_ID     int
    , product       varchar(64)
    , price         decimal(15,2)
    , "location"    varchar(64)     -- to allow for other locations
)
;

insert into #department values (4000, 'VW Rabbit', 5000.00, 'N');
insert into #department values (1000, 'BMW X5', 15.000, 'N');

insert into #department values (3000, 'Tesla S', 30.000, 'S');
insert into #department values (2000, 'BMW X3', 20.000, 'S');

Das bedeutet, dass Sie nur die eine Abteilungstabelle verwenden und die zusätzliche Spalte „Standort“ haben, um bei Bedarf Ost oder West hinzuzufügen. Dadurch wird die Notwendigkeit verringert, für jeden neuen Standort, der Ihrer Liste hinzugefügt wird, eine neue Datenbanktabelle zu erstellen. Sie könnten dies je nach Umfang der Daten um Stadt und/oder Bundesland oder was auch immer erweitern, aber Sie sollten darauf abzielen, nur eine Tabelle für diesen Zweck zu verwenden.

Das Erstellen mehrerer Tabellen, die nur auf dem Standort basieren, wäre nicht zu empfehlen, und denken Sie, was würden Sie tun, wenn es viele Standorte gäbe, z. B. 50 oder mehr? Es wäre ein Albtraum, diesen Code zu verwalten, indem man für jeden Standort eine separate Tabelle erstellt.


Beantwortet von –
JayD


Antwort geprüft von –
Pedro (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like