2012-05-23 70 views
0

我寫這需要一個SQL語句:SQL查詢幫助 - 嵌套我想

  1. 尋找有一定數量
  2. 匹配的工作,另一臺工作
  3. 顯示結果

這是我目前擁有的。

select * from PreviousJobs pj, Jobs j where jobId = '273121' 
AND where (pj.sOtherRef = j.sOtherRef) = True  

Hmmmmm

回答

4

有沒有需要嵌套;這是一個簡單連接的需要的,這將有顯式連接符號來最好寫成:

SELECT cj.*, pj.* 
    FROM PreviousJobs AS pj 
    JOIN Jobs   AS cj ON pj.sOtherRef = cj.sOtherRef 
WHERE cj.jobId = '273121' 

你不需要第二凡在你的聲明(這是一個語法錯誤,你應該提供給我們用你的DBMS給你的錯誤信息)。您不需要將比較與TRUE進行比較。

FROM子句中逗號分隔的表名列表在SQL-86和SQL-89中是必需的,但從SQL-92支持添加到DBMS中以來並不需要。你應該知道它,以便如果你閱讀舊的SQL,你知道它的意思。但是你應該只使用新的JOIN表示法,除非工作場所標準壓力過大(並且不明智),否則會使用舊的表示法。

根據您使用的DBMS,您可能會發現不允許在表別名中使用AS(Oracle),即使標準表示它是可以的。這種差異就是爲什麼在問題中包含關於數據庫管理系統的信息是一個好主意。

+0

+1表名風格的額定列表。這種風格早已不在模擬磚機手中,而且OP還需要現代化。 –

4

你不需要=真,或第二的位置。

只是

select * from PreviousJobs pj, Jobs j where jobId = '273121' 
AND pj.sOtherRef = j.sOtherRef 
+0

尼斯:-)感謝您指出了逗號SEPA – Mikey3Strings

1
  1. 找工作有一定的數量:其中的jobId = '273121'
  2. 匹配工作到另一個表:內上pj.sOtherRef加入= j.sOtherRef
  3. 顯示結果:SELECT *從PreviousJobs pj則

查詢將是..

select * 
    from PreviousJobs pj inner join Jobs j ON pj.sOtherRef = j.sOtherRef 
where j.jobId = '273121'