2011-01-31 102 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