This topic has been archived. It cannot be replied.
-
工作学习 / IT技术讨论 / 问一个SQL怎么写,用的mysqlTable A
Column, a1, a2, a3
Table B
现在需要Select a1,a2,a3 from A,另外最后想虚拟一个cloumn a4在结果里。a4 的值根据一个在B中的query来决定。如果此query有结果 a4=1, 如果没有 a4 =0.
要求用一个SQL 语句实现。
谢谢。
-fatbean(胖豆 思想的海飞丝);
2005-1-26
{222}
(#2094718@0)
-
这样行吗?SELECT a1, a2, a3, IIf(Not IsNull([TableB.Key]),1,0) AS a4 FROM TableA LEFT JOIN TableB ON TableA.Key= TableB.Key
-23456789(大白呼);
2005-1-26
(#2094749@0)
-
MySQL does not support embedded SQL. There is no chance for us to write fancy statement with it. So you may have to utilize your programming language.
-sailor(相约1月8);
2005-1-26
(#2094769@0)
-
Thanks a lot.
-fatbean(胖豆 思想的海飞丝);
2005-1-26
(#2094780@0)
-
maybe something like this: select t1.*, (select if(count(*)>0,1,0) from t2) from t1;
-canadiantire(轮胎-正点下班);
2005-1-26
(#2094820@0)
-
I don't know MySQL, only know Oracle, Oracle will use Decodeselect aa.*, decode(count-1, -1,0, 1 ) from
aa, (select count(*) count from b ) bb
-ningxin0809(雁影行洲);
2005-1-26
{87}
(#2095221@0)
-
是你自己瞎想的吧?不会有这样的需求。如果B 的query可以化成 count(...) 还真可以做:
select A.a1,a2,a3 , 1-isnull(count(B.a1)/count(B.a1)) from A left join B on 1=1 group by A.a1,a2,a3;
但是毫无用处。因为显然比先用一个query拿到 B的结果,再
select a1,a2,a3, result 要慢。
-holdon(try again);
2005-1-26
{241}
(#2095471@0)
-
那我还是招了吧Table B 是某硬件资源
Table A 是用户资源,关联到硬件资源
这个虚拟的column a4代表 是否有用户关联到此硬件。
本来是想建立一个column a4,然后在用户做选择某硬件和放弃某硬件操作时检查是否有用户关联到此硬件,这样在查询硬件信息的时候比较简单因为直接有a4
但是由于“用户做选择某硬件和放弃某硬件操作”这部分代码比较复杂或者由于某个原因不方便修改,所以我决定以硬件为研究对象。
这就是这个SQL的背景。
-fatbean(胖豆 思想的海飞丝);
2005-1-26
{394}
(#2095488@0)
-
join two tables, for the 4th column, try to find null->empty function, then use length() function convert it to 0 or 1.
-647i(盲人协会);
2005-1-26
(#2095538@0)
-
看不懂,以硬件为研究对象什么意思?不是一个query吗?
A 和B 关联的话就是一个标准的查询:
select A.a1,a2,a3 , 1-isnull(count(B.a1)/count(B.a1)) from A left join B on A.a2=B.a2 group by A.a1,a2,a3;
-holdon(try again);
2005-1-26
{165}
(#2095771@0)
-
以硬件为中心的思路是对的。因为在任何时间,某硬件只可以有一个用户。如果正在使用中,这个硬件就不可以再sign给其它人。就像图书管理一样,每个硬件还应该有一个log file追踪使用的历史。
-23456789(大白呼);
2005-1-27
(#2096640@0)