2012-09-04 51 views
0

我真的不确定如何查询。我在我的DB以下使用JOIN进行正确的查询

ID,员工,jobsite1,STIME,ETIME,lunchout,lunchin,说明,材料,jobsite2,STIME,ETIME,lunchout2,lunchin2,内容描述2,materials2

这实际上重复5倍。当我从表格中选择SELECT时,就像一个魅力拉动我所有的数据(我将它导出为xls进行编辑),然后从jobsite2,3,4,& 5中获取所有信息,并将其复制并粘贴到一行。所以基本上

ID, EMPLOYEE, JOBSITE, , STIME,ETIME,LUNCHOUT,LUNCHIN, DESCRIPTION, MATERIALS 
1, CHRIS , MYSITE, , 9:00, 1:00 ,12:15, 12:45 , WORKED HERE, NONE 
1, CHRIS , SECONDSITE, 1:15, 5:00 ,  ,  , WORKED HERE, NONE 
2, BOB  , MYSITE , 9:00, 5:00 ,12:00 ,12:30 , WORKED HERE, NONE 
3, MIKE , MYSITE , 9:00, 2:00 ,12:00 ,12:30 , WORKED HERE, BOUGHT STUFF 
3, MIKE , SECONDSITE, 2:00, 5:30 ,  ,  , DOING THIS , NONE 

有没有办法查询这个没有我通过Excel手动执行此操作?使用可能JOIN?我从来没有使用JOIN,但听说过它,并且总是好奇的是,一旦我有正确的查询设置,导出这可能会更容易?这有意义吗?

+0

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins做到这一点。 html –

+0

请指定您的数据库和版本,提供样本数据和期望的输出。 – RedFilter

+0

它全部提交到一张表中。 DB名称是员工表名是tcardsubmit so ... employee.tcardsubmit 不确定MySQL版本号是 – ldiggins

回答

3

如果我理解正确的话,你可以使用UNION

SELECT id, employee, jobsite1, stime1, etime1, 
     lunchout1, lunchin1, description1, materials1 
FROM tableName 
UNION 
SELECT id, employee, jobsite2, stime2, etime2, 
     lunchout2, lunchin2, description2, materials2 
FROM tableName 
UNION 
SELECT id, employee, jobsite3, stime3, etime3, 
     lunchout3, lunchin3, description3, materials3 
FROM tableName 
UNION 
SELECT id, employee, jobsite4, stime4, etime4, 
     lunchout4, lunchin4, description4, materials4 
FROM tableName 
SELECT id, employee, jobsite5, stime5, etime5, 
     lunchout5, lunchin5, description5, materials5 
FROM tableName 
+0

这绝对是正确的做法。要记住两点。 (1)您可能需要过滤删除空行(类似“工作现场不为空”)。此外,这可以消除数字之间的重复,这可能会或可能不需要。另一列,给出号码,将解决这个问题。 –

+0

非常感谢您的帮助!过滤器必须放在每一行上吗? jobsite2,starttime2,endttime2等?无论哪种方式,它都是我需要的完美选择。 – ldiggins