[SQL ] Sqlite inner join 問題請教

作者: yimean (溫柔殺手)   2019-04-10 10:22:00
資料庫名稱:Sqlite
資料庫版本:3
內容/問題描述:使用DB Browser 3.11.2
各位板上的大大早上好。我有一份原始資料如下。
https://imgur.com/NcyhUQH
為了跟其他資料表格作連結我把這份表格分拆成
模具對品名
diedata
兩份資料表
兩份資料表的結構如下
CREATE TABLE "diedata" (
"Die_num" TEXT UNIQUE,
"Cut_OD" REAL,
"Cut_ID" REAL,
"Cut_High" REAL,
"Cut_avalible" TEXT,
"Plate_type" TEXT,
"Plate_Jontion" REAL,
"Plate_OD" REAL,
"Plate_tap" TEXT,
"Stripper" REAL,
"Strip_Hole" REAL,
FOREIGN KEY("Die_num") REFERENCES "品名對模號"("Die_num") ON UPDATE
CASCADE
);
CREATE TABLE "品名對模號" (
"Die_num" TEXT,
"Item" TEXT
);
我想嘗試將兩份資料表作inner join
我下的指令是
SELECT * FROM diedata INNER JOIN 品名對模號 ON diedata.Die_num = 品名對模號.
Die_num;
得到如下結果
https://imgur.com/jyS28wF
我預期應該會得到原來的那份資料的。請問是不是出了什麼問題?
煩請高手指導,感恩。
作者: yimean (溫柔殺手)   2019-04-12 08:27:00
@C大,感謝,我按照你的精神把句子改了一下,是可以的。select a.*, b.Item FROM diedata as a INNER JOIN品名對模號 as b on a.Die_num = b. Die_num;所以Inner join並不會把重覆的資料去除。這是正常的嗎?
作者: ChingLan326 (總舵主)   2019-04-11 18:04:00
https://i.imgur.com/H0oXr9Q.png我只會MSSQL,這樣是你要的結果嗎?
作者: konkonchou (卡卡貓)   2019-04-11 13:01:00
diedata.* 或利用別名選出要的就好
作者: yimean (溫柔殺手)   2019-04-11 14:15:00
@C大,可以從資料的圖中發現Die_num出現兩次。
作者: joery (Lin)   2019-04-10 19:11:00
INNER JOIN 必須二份資料表都有資料才會有哦但看你第一張原始資料如果拆成二張似乎都有資料,join 語法看起來沒問題,看一下是不是資料誤值多了空白或其他
作者: yimean (溫柔殺手)   2019-04-11 08:18:00
@J大感謝回應,這是我的兩份資料表原始資料https://imgur.com/uZ8kx0Ohttps://imgur.com/NArhRkO在請您指導一下,感謝。阿....我發現問題了,在一開始的切割資料,我的欄位名稱弄反了,難怪對不起來。不好意思。https://imgur.com/vGhUsPY 這是合併後的資料,請問應該怎麼去除重覆資料?Die_num?
作者: ChingLan326 (總舵主)   2019-04-11 11:39:00
不懂你指的重覆是指哪個部份
作者: konkonchou (卡卡貓)   2019-04-12 23:11:00
*就是all, 沒指名就會通通都帶出來, 建議養成別名習慣
作者: tmio (踢米歐)   2019-04-13 20:08:00
你只打一個*,2個資料表沒有別名,這樣會select出2個資料表全部欄位查詢結果欄位是看select後列出的欄位,inner join主要是設定2個資料表的關聯條件…
作者: yimean (溫柔殺手)   2019-04-14 20:39:00
了解,感謝指導。

Links booklink

Contact Us: admin [ a t ] ucptt.com