我有以下SQL語句:問題的複雜SQL語句
SELECT
COUNT(table2.programName),
table2.programName
FROM
table1
LEFT JOIN
table2
ON
table1.programID = table2.programID
WHERE
table1.MemberID = 12345
AND
table2.programName = (table2.programName associated with dynamic table2.programID)
我的確意識到了最後的,語句是當前無效,但它似乎什麼我不能左右我的頭。雖然我可以通過插入已知值成功執行查詢,但查詢需要動態生成(使用php完成),並且該值將顯示爲變量。我只是放在括號內以顯示我正在努力完成的事情。
任何想法我將如何去尋找在單個sql語句中的圓括號中與programID關聯的programName?
編輯 - 可能的答案
所以在測試出多一些,我想我可能已經找到了答案,但我不能確定它是否「好」的做法。這裏是我的代碼:
SELECT
COUNT(table2.programName),
table2.programName
FROM
table1
LEFT JOIN
table2
ON
table1.programID = table2.programID
WHERE
table1.MemberID = 12345
AND
table2.programName = (SELECT table2.programName FROM table2 WHERE table2.programID = $id);
@OMG小馬 - 你的代碼和我上面編輯的一樣,是否真的有一個首選的方法? – JM4 2010-11-13 01:24:16
@ JM4:你自己的查詢沒有意義。使用聚合函數並選擇另一個沒有分組的列將選擇一個完全隨機的程序名稱。 WHERE子句顯然會使它選擇正確的,但是查詢不會在大多數RDBMS上執行。 – 2010-11-13 01:26:49
@ JM4:您不需要發佈子查詢,也不需要進行更多的表掃描。 – 2010-11-13 01:27:21