Saya mendapatkan kode kesalahan seperti ini

Kode Kesalahan: 1052. Kolom 'TradeDate' di daftar bidang ambigu

Ketika saya mencoba menggabungkan dua tabel. Dua kolom file csv terlihat seperti ini: data_price_temp konsumsi

Jadi, saya menamai kolom Date di semua tabel seperti TradeDate. Kemudian, saya mencoba menggunakan TradeDate dari dua tabel yang telah saya buat untuk melakukan join

Sintaks saya terlihat seperti ini

CREATE DATABASE price_temp;

USE price_temp;

CREATE TABLE pricetemp(TradeDate CHAR(10),
                       Price double,
                       Temp double); 
SELECT* FROM pricetemp

CREATE TABLE consumption(TradeDate CHAR(10),
                        Consumption double);
                        
 SELECT* FROM consumption  
 
CREATE TABLE production(TradeDate CHAR(10),
                       Production double);
                       
SELECT * FROM production

SELECT TradeDate, Price, Temp, Consumption
FROM pricetemp, consumption
WHERE pricetemp.TradeDate = consumption.TradeDate`
1
sus30 12 Mei 2021, 19:03

2 jawaban

Jawaban Terbaik

Kueri terakhir Anda harus menggunakan sintaks gabungan eksplisit dan harus selalu memiliki notasi table.field untuk menghindari kesalahan yang Anda maksud

SELECT pricetemp.TradeDate, Price, Temp, Consumption
FROM pricetemp JOIN consumption ON 
pricetemp.TradeDate = consumption.TradeDate

Atau

SELECT consumption.TradeDate, Price, Temp, Consumption
FROM pricetemp JOIN consumption ON 
pricetemp.TradeDate = consumption.TradeDate

Untuk bergabung dengan tabel lain cukup:

SELECT consumption.TradeDate, Price, Temp, Consumption, anotherTable.production
FROM pricetemp 
    JOIN consumption ON pricetemp.TradeDate = consumption.TradeDate
    JOIN anotherTable ON pricetemp.TradeDate = anotherTable.TradeDate
2
Lelio Faieta 12 Mei 2021, 16:32

Perbaikan

SELECT pricetemp.TradeDate, Price, Temp, Consumption
FROM pricetemp, consumption
WHERE pricetemp.TradeDate = consumption.TradeDate`

Penjelasan

Kesalahan memberitahu Anda bahwa Anda memiliki beberapa bidang yang memiliki nama yang sama. Saat Anda menghadapi situasi ini, Anda perlu mengklarifikasi bidang mana yang ingin Anda gunakan dengan menambahkan nama tabel, seperti tablename.fieldname. Setelah Anda memahami ini, Anda tidak akan memiliki masalah untuk bergabung dengan tabel selanjutnya. Dalam kasus khusus kami pricetemp.TradeDate dan consumption.TradeDate memiliki nilai yang sama, tetapi RDBMS tidak mengetahui hal ini dan meminta Anda untuk menentukan mana yang ingin Anda gunakan.

0
Lajos Arpad 12 Mei 2021, 16:40