2011-01-31 105 views
1

所以...我是新来的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的伟大工程,太拉所有输入的数据...什么查询将努力让他们显示为同一查询“客户1,和顾客2”?我的问题有意义吗?我试图将它导出到Excel中,以便它基本上显示一行中的所有信息。员工1,曾在现场1现场4(而是显示:员工(我)曾在(这个地方)和(那个地方)

如果双方的工地来自同一个表中的DB

谢谢任何帮助你们/加仑能给

+1

对于什么数据库? – 2011-01-31 21:52:53

回答

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 
0

你问这样的事情?

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

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

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