[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