作者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/cn.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