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)