SQL分组和删除重复项

时间:2014-09-08 04:08:42

标签: sql duplicates

tbl_A

ID    data   ID_tbl_B
1     xyz1     15
2     xyz2     15
3     xyz3     15

tbl_B   (table for which file the data were taken, or table for filenames)
ID      ID_user       filename 
15      10            abcd.xls
16      10            abcd2.xls
17      10            abcd3.xls

tbl_C   (table for duplicates from tbl_A)
ID        ID_tbl_B     ID_tbl_A       
4           15          1              
5           15          2
6           15          3
7           16          1
8           16          2
8           16          2
9           17          1
10          17          2

tbl_A包含从tbl_B的每个文件中获取的数据。 例如,文件(abcd.xls)包含以下数据:

abcd.xls
xyz1
xyz2
xyz3
xyz1   <--duplicate
xyz2   <--duplicate
xyz3   <--duplicate

tbl_C包含重复数据。 如果tbl_A上已有数据,tbl_C将记录来自tbl_AID_tbl_A)的ID, 并记录来自tbl_BID_tbl_B)的ID来自哪个文件。 例如,来自上面的例子

(tbl_C breakdown)
abcd.xls
ID        ID_tbl_B     ID_tbl_A 
4           15          1              
5           15          2
6           15          3

abcd2.xls
ID        ID_tbl_B     ID_tbl_A 
7           16          1
8           16          2
8           16          2

abcd3.xls
ID        ID_tbl_B     ID_tbl_A 
9           17          1
10          17          2

sql查询应该输出以下内容:

tbl_A(data) 

xyz1
xyz2
xyz3
xyz1
xyz2
xyz1
xyz2

我已经坚持了一天,到目前为止,这是我正在处理的问题

SELECT data FROM `tbl_A`
LEFT JOIN `tbl_B` ON `tbl_A`.ID_tbl_B = `tbl_B`.ID
LEFT JOIN `tbl_C` ON `tbl_C`.
WHERE `tbl_B`.ID_user = 10

我甚至无法完成查询,因为我无法提出解决方案。有人可以与我分享他们的想法吗?

1 个答案:

答案 0 :(得分:0)

根据我对你的问题的理解,你应该尝试这样的事情:

SELECT distict ta.data FROM tbl_c tc JOIN tbl_B tb ON tc.ID_tbl_B = tb.ID JOIN tbl_A ta ON tc.ID_tbl_A = ta.ID WHERE tb.ID_user = 10

虽然为什么tbl_c中有两条记录具有相同的tbl_a和tbl_b ID?那部分对我没有意义。