"select Z1.*,Z2.* from (Select code as qq From userr) as z1,(Select code AS CODE1 ,name AS I_NAME From payway) as z2 where z1.qq = z2.code1"; 其实,没有这吗麻烦!你可以这样 SELECT A.CODE,B.NAME,B.CODE FROM USERR AS A,PAYWAY AS B WHERE A.CODE=B.CODE 第二个问题是 要用 % 号不要用* 第三个语法没有问题
你的这句话有问题 CString sqlSelect = "Select * From userr where substring(code,1,1)='A%'"; substring(code,1,1)='A%'不应该加'%'你用的是'=' 不是'like'这样你当然查不出结果。
你的第一条语句不必这么麻烦嘛!而且肯定是不对了。 我认为可以下是以下的格式: 1、CString sqlSelect = "select (写明你要显示的字段归属于那个表的,一定要具体) from payway left join userr on payway.code = payway.code. 2、模糊查询在SQL Server中的用法应是: Select ... from ... where ... Like '%...%' 3、无返回的这个语句可以改为: sqlSelect = "Select * From operate where code Like '1%'"; 这样的话,它就能够显示出你想要查找的结果了!
宝兰 谢谢加入讨论. 1.是SQL Server 中的子查询,反复试验过.是正确的.(用于统计中很有用的). 3.目前在我的程序中仍无结果.我估计还是我的DAO配置有错误. 打开CDaoDataBase用的是 m_pDatabase->Open("",FALSE,FALSE,"ODBC;DSN=MQIS;Description=SQL Server;DATABASE=mdbc;UID=Administrator;PWD=;"); 或 m_pDatabase->Open("",FALSE,FALSE,"ODBC;DSN=MQIS"); 打开CDaoRecordset用的是 m_xx = new CDaoRecordset(pApp->m_pDatabase); CString sqlSelect = (_T("Select * From userr where code Like '%01%'"));
其实,没有这吗麻烦!你可以这样
SELECT A.CODE,B.NAME,B.CODE FROM USERR AS A,PAYWAY AS B WHERE A.CODE=B.CODE
第二个问题是
要用 % 号不要用*
第三个语法没有问题
1.是用于子查询的表达式.
2.运行的结果是 "表达式中的 'CHARINDEX'函数未定义"
3.运行的结果是 "表达式中的 'substring'函数未定义"
前台我用的是VC++的DAO环境,其语句结构如下:
CDaoRecordset *m_xx;
m_xx = new CDaoRecordset(pApp->m_pDatabase); // pApp->m_pDatabase为指向SQL server的数据库指针
CString sqlSelect = "Select * From userr where substring(code,1,1)='A%'";
m_xx = pApp->OpenTable(m_xx,pApp->m_pDatabase,sqlSelect);
其结果无正确内容返回.
m_pDatabase->Open("",FALSE,FALSE,"ODBC;DSN=MQIS;Description=SQL Server;DATABASE=mdbc;UID=Administrator;PWD=;");
或
m_pDatabase->Open("",FALSE,FALSE,"ODBC;DSN=MQIS");
打开数据库时VC++并未识别出数据库类型为SQL Server的问题.用它去定义的CDaoQueryDef的类型 ii = m_query ->GetType(); 均为 0 ,因此VC++中仍然按照ACCESS的规则去解释语句.ww1007老兄能否帮我看看如何解决它的"认识"问题呢?
m_pDatabase->Open("",FALSE,FALSE,"ODBC;DSN=MQIS;Description=SQL Server;DATABASE=mdbc;UID=Administrator;PWD=;");
或
m_pDatabase->Open("",FALSE,FALSE,"ODBC;DSN=MQIS");
打开数据库时VC++并未识别出数据库类型为SQL Server的问题.用它去定义的CDaoQueryDef的类型 ii = m_query ->GetType(); 均为 0 ,因此VC++中仍然按照ACCESS的规则去解释语句.ww1007老兄能否帮我看看如何解决它的"认识"问题呢?
CString sqlSelect = "Select * From userr where substring(code,1,1)='A%'";
substring(code,1,1)='A%'不应该加'%'你用的是'=' 不是'like'这样你当然查不出结果。
我认为可以下是以下的格式:
1、CString sqlSelect = "select (写明你要显示的字段归属于那个表的,一定要具体) from payway left join userr on payway.code = payway.code.
2、模糊查询在SQL Server中的用法应是:
Select ... from ... where ... Like '%...%'
3、无返回的这个语句可以改为:
sqlSelect = "Select * From operate where code Like '1%'";
这样的话,它就能够显示出你想要查找的结果了!
谢谢加入讨论.
1.是SQL Server 中的子查询,反复试验过.是正确的.(用于统计中很有用的).
3.目前在我的程序中仍无结果.我估计还是我的DAO配置有错误. 打开CDaoDataBase用的是
m_pDatabase->Open("",FALSE,FALSE,"ODBC;DSN=MQIS;Description=SQL Server;DATABASE=mdbc;UID=Administrator;PWD=;");
或
m_pDatabase->Open("",FALSE,FALSE,"ODBC;DSN=MQIS"); 打开CDaoRecordset用的是
m_xx = new CDaoRecordset(pApp->m_pDatabase);
CString sqlSelect = (_T("Select * From userr where code Like '%01%'"));
m_xx->m_pDatabase = m_pDatabase;
m_xx->Open(dbOpenDynaset,sqlSelect);
请你一起再帮我查查原因.十分感谢
1,as 不要。
........(Select code as qq From userr) z1....
2,3,charindex和substring是sql server扩展的函数。不包括在odbc的dao里。
所以你得换一种写法。charindex,好象没有现成的函数。substring改成substr试试。