Das unmittelbare Problem ist, dass zumindest Package_Code
und Site_Code
in mehreren Tabellen existieren, aber Ihre select
nicht festgelegt, welche Tabelle Sie Daten aus zurückkehren möchten. Ja, Sie wissen, dass Sie einen inneren Join für diese Spalten durchführen, so dass es keine Rolle spielt, welcher Wert der Tabelle zurückgegeben wird, aber die SQL-Syntax lässt Oracle diesen Rückschluss nicht zu. Im Allgemeinen würde ich empfehlen, dass Sie immer jede Spalte als Alias verwenden, damit klar ist, aus welcher Tabelle ein bestimmtes Attribut stammt, und dass Sie den Code nicht brechen, wenn Sie einer anderen Tabelle, die denselben Namen hat, ein Attribut hinzufügen.
SELECT tbl_Holiday_Details.Package_Code,
Description,
Duration,
tbl_Site_Visted.Site_Code
FROM tbl_Holiday_Details
INNER JOIN tbl_Site_Visted
ON tbl_Holiday_Details.Package_Code = tbl_Site_Visted.Package_Code
INNER JOIN tbl_Site_Visted
ON tbl_Site_Details.Site_Code = tbl_Site_Visted.Site_Code
arbeiten Description
und Duration
unter der Annahme, in einer der drei Tabellen nur definiert. Ich würde auch Description
und Duration
Aliase hinzufügen, aber ich weiß nicht, welche der Tabellen verwendet werden sollten. Natürlich würde ich im Allgemeinen einfachere Aliase (z. B. tsv
für tbl_Site_Visited
) anstelle des vollständigen Tabellennamens verwenden.
Wenn Sie Ihre Spalten vermeiden wollen Aliasing, könnten Sie die USING
-Klausel verwenden, anstatt die ON
Klausel
SELECT Package_Code,
Description,
Duration,
Site_Code
FROM tbl_Holiday_Details
INNER JOIN tbl_Site_Visted
USING(Package_Code)
INNER JOIN tbl_Site_Visted
USING(Site_Code)
Wenn beide Tabellen eine Spalte mit demselben Namen enthalten, dann müssen Sie die DB sagen, welche Sie bedeuten. Tun Sie das, indem Sie den Tabellennamen vor der Spalte hinzufügen. –
Sie haben 'Site_Code'-Spalten in mindestens zwei Tabellen. In der Spaltenliste 'SELECT' klären Sie nie, welchen Sie möchten. –
Ich bin 3 Tabellen zusammen und tbl_site_visted ist die Verbindung zwischen tbl_holiday_details und tbl_Site_Details – user3719086