我有以下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