web-dev-qa-db-ja.com

エラーコード1054:データをテーブルに挿入するときに不明な列

列が異なる2つの別々のテーブルのデータを3番目のテーブルに結合しようとしていますが、

エラーコード1054:フィールドリストの列 'Company'が不明です

ポップアップし続けます。

私の現在のコードは:

INSERT INTO Company (Year, Company, Revenue, Profits) 
(select Year, Company, Revenue, Profits from 
(select Year, Comp_Name from Comp_Info
union
select Revenue, Profits from Comp_Financials) 
AS tempTable);

Comp_Financialsテーブル:

Comp_Financials

Comp_Infoテーブル:

Comp_Info Table

両方のテーブルは、作成済みのテーブルに結合されます:Company(ID int auto_increment、Year int、Company varchar(20)、Revenue int、Profits int、Primary key(ID))

どんな助けでも大歓迎です!

1
Anthony Potts

JOINの代わりにID by UNIONを使用する必要があります。
JOINを使用すると、サブクエリは必要ありません。
また、(の後のSELECTの前のINSERT INTOは必要ありません。

したがって、機能するクエリは次のとおりです。

INSERT INTO Company (Year, Company, Revenue, Profits) 
SELECT CI.Year, CI.Comp_Name AS Company, CF.Revenue, CF.Profits
FROM Comp_Info AS CI
JOIN Comp_Financials AS CF ON CF.ID = CI.ID;

詳細

UNIONで試したのは間違ったアプローチです。小さな例で説明しましょう。

Comp_InfoComp_Financialsは、例の一時テーブルです。

CREATE TEMPORARY TABLE Comp_Info (Id INT, Year INT, Comp_Name VARCHAR (200));

INSERT INTO Comp_Info (Id, Year, Comp_Name) VALUES
(1, 2005, 'Wal-Mart'), (2, 2005, 'Exxon Mobil'), (3, 2005, 'General Motors');

CREATE TEMPORARY TABLE Comp_Financials (Id INT, Revenue INT, Profits INT);

INSERT INTO Comp_Financials (Id, Revenue, Profits) VALUES
(1, 288189, 10267), (2, 270772, 25330), (3, 193517, 2805);

サンプルデータを使用すると、UNIONは次のようになります。

SELECT Year, Comp_Name FROM Comp_Info
UNION
SELECT Revenue, Profits FROM Comp_Financials;

|Year      | Comp_Name       |
|----------|---------------- |
|2005      | Wal-Mart        |
|2005      | Exxon Mobil     |
|2005      | General Motors  |
|288189    | 10267           |
|270772    | 25330           |
|193517    | 2805            |

ただし、同じサンプルデータを使用すると、JOINは次のようになります。

SELECT CI.Year, CI.Comp_Name AS Company, CF.Revenue, CF.Profits
FROM Comp_Info AS CI
JOIN Comp_Financials AS CF ON CF.ID = CI.ID;

| Year  | Company           | Revenue   | Profits   
|------ |------------------ |---------- |---------
| 2005  | Wal-Mart          | 288189    | 10267
| 2005  | Exxon Mobil       | 270772    | 25330
| 2005  | General Motors    | 193517    | 2805
2
Arulkumar