我正在敲我的頭,試圖弄清楚如何將T-SQL查詢轉換爲MSAccess將執行的格式。我對MSAccess很新,所以這是我的週末。我試圖讓這個查詢拉我想要的信息到MSACCESS:構建MSAccess SQL查詢的麻煩
SELECT p.person_id, mem.profile_id, nick_name, last_name, p.postal_code,p.birth_date,p.gender, grade.selected_value
FROM dbo.core_profile_member AS mem
INNER JOIN dbo.core_person AS p ON mem.person_id = p.person_id
LEFT JOIN dbo.evnt_registrant_field AS grade ON mem.person_id = grade.person_id AND mem.profile_id = grade.profile_id AND [email protected]
WHERE mem.status_luid <> 316 AND mem.profile_id IN (@profiles)
我一直爭取這一點,和閱讀各種帖子,試圖找出如何得到它的工作。這是我到目前爲止所提出的,但是當代碼執行查詢時會引發語法錯誤。這是我迄今爲止不起作用的:
strSQL1 =
"SELECT p.person_id, mem.profile_id, nick_name, last_name, " & _
" p.postal_code, p.birth_date, p.gender FROM (" & _
" dbo_core_profile_member AS mem INNER JOIN dbo_core_person AS p ON mem.person_id = p.person_id " & _
" LEFT JOIN (SELECT person_id, profile_id, selected_value FROM dbo_evnt_registrant_field " & _
" WHERE custom_field_id = " & strGradeID & ") AS grade ON mem.person_id = grade.person_id " & _
" AND mem.profile_id = grade.profile_id) " & _
" WHERE mem.status_luid <> 316 AND mem.profile_id IN (" & strProfileIDs & ");"
我知道變量正常工作。如果我調試,並且在創建字符串之後檢查立即窗口,我實際上可以在MSSQL管理工作室中運行它,它工作正常。我確信我缺少SQL生成器不喜歡的一些微妙的MSAccess細微差別。
任何人有什麼我需要解決什麼?通過上面的代碼,我得到了「查詢表達式中的語法錯誤(缺少運算符)...」錯誤。
你的代碼片段似乎工作!謝謝!我也喜歡使用查詢設計器的想法,但是我看不到如何通過一個值限制evnt_registrant_field表而不在where子句中進行操作。這將帶走它是真正的「左」功能。我希望納入空值,不限於該數據集。 – gmaness
我想你說的子查詢是使用查詢設計器的障礙。在這種情況下,我首先在設計器的設計視圖中'LEFT JOIN dbo_evnt_registrant_field AS grade',然後切換到SQL視圖並用子查詢'(SELECT ... FROM dbo_evnt_registrant_field WHERE ...)替換'dbo_evnt_registrant_field'' 。或者,您可以構建並保存子查詢SQL作爲單獨的查詢,然後在創建主查詢時將該查詢用作數據源。 – HansUp