作者yimean (溫柔殺手)
看板Database
標題[SQL ] Sqlite inner join 問題請教
時間Wed Apr 10 10:22:00 2019
資料庫名稱: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
我預期應該會得到原來的那份資料的。請問是不是出了什麼問題?
煩請高手指導,感恩。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.116.8
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Database/M.1554862922.A.8B8.html
1F:推 joery: INNER JOIN 必須二份資料表都有資料才會有哦 04/10 19:11
2F:推 joery: 但看你第一張原始資料如果拆成二張似乎都有資料,join 語法 04/10 19:16
3F:→ joery: 看起來沒問題,看一下是不是資料誤值多了空白或其他 04/10 19:16
4F:→ yimean: @J大感謝回應,這是我的兩份資料表原始資料 04/11 08:18
7F:→ yimean: 在請您指導一下,感謝。 04/11 08:20
8F:→ yimean: 阿....我發現問題了,在一開始的切割資料,我的欄位名稱 04/11 08:30
9F:→ yimean: 弄反了,難怪對不起來。不好意思。 04/11 08:30
11F:→ yimean: 麼去除重覆資料?Die_num? 04/11 08:33
12F:→ ChingLan326: 不懂你指的重覆是指哪個部份 04/11 11:39
13F:→ konkonchou: diedata.* 或利用別名選出要的就好 04/11 13:01
14F:→ yimean: @C大,可以從資料的圖中發現Die_num出現兩次。 04/11 14:15
16F:→ ChingLan326: 我只會MSSQL,這樣是你要的結果嗎? 04/11 18:05
17F:→ yimean: @C大,感謝,我按照你的精神把句子改了一下,是可以的。 04/12 08:27
18F:→ yimean: select a.*, b.Item FROM diedata as a INNER JOIN 04/12 08:27
19F:→ yimean: 品名對模號 as b on a.Die_num = b. Die_num; 04/12 08:28
20F:→ yimean: 所以Inner join並不會把重覆的資料去除。這是正常的嗎? 04/12 08:28
21F:→ konkonchou: *就是all, 沒指名就會通通都帶出來, 建議養成別名習慣 04/12 23:11
22F:推 tmio: 你只打一個*,2個資料表沒有別名,這樣會select出2個資料表 04/13 20:08
23F:→ tmio: 全部欄位 04/13 20:08
24F:→ tmio: 查詢結果欄位是看select後列出的欄位,inner join主要是設 04/13 20:11
25F:→ tmio: 定2個資料表的關聯條件… 04/13 20:11
26F:→ yimean: 了解,感謝指導。 04/14 20:39