SQL - Ansicht Erstellen aus mehreren Tabellen
Ich habe drei Tabellen:
POP(country, year, pop)
FOOD(country, year, food)
INCOME(country, year, income)
Ich bin versucht, eine Ansicht zu erstellen, wie:
V(country, year, pop, food, income)
Dies ist mein code bisher. Ich glaube nicht, dass es richtig ist:
CREATE VIEW V AS
(SELECT * FROM POP
UNION
SELECT * FROM FOOD
UNION
SELECT * FROM INCOME);
Ist ein Problem, ein Land, das in POP
möglicherweise nicht vorhanden in FOOD
. Dasselbe geht für das Jahr. Ein Jahr, das in POP
möglicherweise nicht vorhanden in FOOD
. So, denke ich, dass der obige code nicht funktioniert.
- Es ist eher aus der Bahn. Eine union-joins sammelt Zeilen aus mehreren Tabellen und/oder Abfragen, die haben alle die gleichen Spalten.
- Dein code ist an sich nicht schlecht, du bist nur ein wenig verwirrt. Auf der anderen Seite, wissen Sie, Sie sind falsch und das ist ziemlich wichtig. Führen Sie eine der Tabellen, die einen vollständigen Satz von
country
/year
Paare? Und Sie sollten wählen entweder MySQL oder PostgreSQL in den tags, die Lösungen werden nicht unbedingt die gleichen für die zwei Datenbanken.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Union ist nicht, was Sie wollen. Sie wollen zu verwenden, Verknüpfungen zu erstellen, die einzelnen Zeilen. Es ist ein wenig unklar, was eine eindeutige Zeile in den Tabellen und wie Sie wirklich zueinander stehen und es ist auch unklar, ob einer Tabelle werden in Zeilen, die für jedes Land in jedem Jahr. Aber ich denke, das wird Arbeit:
Links (outer) join wird die Rückgabe von Zeilen aus der ersten Tabelle, auch wenn es keine Spiele in der zweiten. Ich habe geschrieben vorausgesetzt, Sie hätte eine Zeile für jedes Land, für jedes Jahr, in der Gewinn-Tabelle. Wenn Sie nicht die Dinge erhalten ein wenig haarig, da MySQL nicht über integrierte Unterstützung für FULL OUTER JOINs zuletzt habe ich geprüft. Es gibt Möglichkeiten, um zu simulieren, und Sie würde die Gewerkschaften. Dieser Artikel geht in Tiefe über das Thema: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/
Danke für die Hilfe. Dies ist, was ich am Ende tun, um es zu schaffen.
Sind Sie mit
MySQL
oderPostgreSQL
?Den Sie verwenden möchten BEITRETEN syntax nicht UNION. Zum Beispiel, über INNER-JOIN:
Aber nur Ergebnisse anzeigen, wenn jedes Land und jedes Jahr sind in allen drei Tabellen. Wenn dieses nicht ist, was Sie wollen, schauen Sie in die Links-outer-joins (mit dem gleichen link oben).