SQL查询问题

时间:2011-01-31 21:50:54

标签: sql

所以......我是sql的新手,喜欢我学到的东西,但这里有一个我很难过的问题。

我创建了一个网站表单。这是一张时间卡型表格。用户登录并单击下拉菜单(从DB中选择)称为jobsite,然后向下滚动并单击Jobsite#2。 (两个字段都从同一个表中选择..)当他们提交时,它提交到数据库就好了。将这两个字段显示为他们选择的ID号。不是名称..

SELECT  jobsite.Jobsite as 'Customer',
FROM    timeCard
LEFT JOIN jobsite ON timeCard.jobsite = jobsite.id

该查询效果很好。提取timeCard.jobsite信息。如果我将其更改为

LEFT JOIN jobsite ON timeCard.jobsite2 = jobsite.id 

从Jobsite2中提取所有输入的数据也很有效...什么查询可以让他们在同一个查询中显示为“Customer 1和Customer2”?我的问题有意义吗?我试图让它导出到Excel,以便它基本上显示在一行上的所有信息。员工1,在工地1和工地4工作(但显示:员工(我)在(这个地方)和(那个地方)工作

两个工作场所来自数据库中的同一个表

感谢你们/ gals给予的任何帮助

3 个答案:

答案 0 :(得分:4)

您需要两次加入jobsite表,因为一条timecard记录与两个不同的jobsite记录相关联(假设您的架构和DBMS有些相关内容)。 ..):

SELECT t.EmployeeName, j1.jobsite AS 'Customer 1', j2.jobsite AS 'Customer 2'
FROM timecard t
LEFT JOIN jobsite j1 ON t.jobsite = j1.id
LEFT JOIN jobsite j2 ON t.jobsite2 = j2.id

答案 1 :(得分:1)

SELECT  js1.jobsite AS customer1, js2.jobsite AS customer2
FROM    timecard tc
LEFT JOIN
        jobsite js1
ON      js1.id = tc.jobsite
LEFT JOIN
        jobsite js2
ON      js2.id = tc.jobsite2

答案 2 :(得分:0)

你在问这样的事吗?

SELECT jobsite.Jobsite as 'Customer',
FROM   timeCard, jobSite
WHERE  timeCard.jobsite = jobsite.id
 OR timeCard.jobsite2 = jobsite.id

(PS。由于您提到您是SQL的新手,我想借此机会确保您了解参数化查询(ASP.NetPHP上的文章),您应该总是使用而不是连接字符串)