Friday, May 29, 2009

Join, left join, right join的区别

通俗的讲:  

   A   
left   join    B    的连接的记录数与A表的记录数同  

   A   
right   join    B    的连接的记录数与B表的记录数同    


   A   
left   join    B    等价B   right   join    A  

   

   


  
table    A:  

   Field_K,    Field_A  

  
1                        a  

  
3                        b  


  
4                        c  

   

  
table    B:  

   Field_K,    Field_B  


  
1                        x  

  
2                        y  

  
4                        z  

   


  
select    a.Field_K,    a.Field_A,    b.Field_K,    b.Field_B  

  
from    a   left   join    b   on    a.Field_K=b.Field_K  


   

   Field_K          Field_A          Field_K          Field_B          

  
----------    ----------    ----------    ----------    


  1                      a                     1                      x                    

  
3                      b                     NULL               NULL  

  
4                      c                     4                      z                    


   

  
select    a.Field_K,    a.Field_A,    b.Field_K,    b.Field_B  

  
from    a   right   join    b   on    a.Field_K=b.Field_K  


   

   Field_K          Field_A          Field_K          Field_B          

  
----------    ----------    ----------    ----------    


  1                      a                     1                      x                    

  
NULL               NULL               2                      y                    

  
4                      c                     4                      z      --



举个例子:  

   假设a表和b表的数据是这样的。  

   a                          b    

   id      name  id      stock   


  
1  a             1         15  

  
2          b             2         50  

  
3          c                   


   

  
select   *   from    a   inner   join    b   on    a.id=b.id  


   这个语法是连接查询中的内连接,它产生的结果是  

   两个表相匹配的记录出现在结果列表中。  

   根据上面的表,出现的结果是这样的  

   a.id      name      b.id      stock  


  
1        a             1         15  

  
2              b             2         50  

  
----------------------------  


  select   *   from    a,b   where    a.id=b.id  

   这个语法是内连接的另外一种写法,其执行结果与inner   
join    一样  


   

  
--------------------------------    

   

  
select   *   from    a   left/right   join    b   on    a.id=b.id  


   这个是外连接语法中的左外连接或右外连接  

   如果是左外连接的话,它将显示a表的所有记录,  

  
select    a.*,b.*   from    a   left   join    b   on    a.id=b.id  


   查询的结果是这样的:  

   a.id      name      b.id      stock  

  
1          a         1             15  


  
2                b         2             50  

  
3                c       null         null   

  
--------------------------------------------  


   如果是右外连接的话,它将显示b表的所有记录,  

  
select    a.*,b.*   from    a   right   join    b   on    a.id=b.id  


   查询的结果是这样的:  

   a.id      name      b.id      stock  

  
1          a         1             15  


  
2                b         2             50   




--

select    a.*,b.*   from    a   left   join    b   on    a.k   =    b.k    


  
select    a.*,b.*   from    a   left   outer   join    b   on    a.k   =b.k  


  
----------上面两种一样left    join是left    outer    join的简写  

  select    a.*,b.*   from    a   left   inner   join    b   on    a.k   =    b.k    


   没有这种写法,错误的语句.




--

在你要使用多个left    join的时候  

   比如说10个  


   我们把10个全都写成left    join的形式  

   然后再SQL让他自动运行一下,它会把最后一次出现的left    join变成left   
outer   join  

   所以依此推理,最后一个left    join会以left   
outer    join的形式存在  


   当然,不管变不变对结果的显示没有任何影响  

   希望我的实验能对你有所帮助   


Monday, May 25, 2009

Java 线程(Thread)

1. 线程方法:
sleep(), join()(相当于方法调用), yield()让CPU给其他线程机会。

2. 线程的优先级:范围从1到10
setPriority(Thread.NORM_PRIORITY+3)优先级提高3级。setPriority(int newPriority);
getPriority();
Thread.NORM_PRIORITY 默认的优先级
Thread.MAX_PRIORITY
Thread.MIN_PRIORITY

3. x线程的同步:
synchronized(this)锁定对象。
public synchronized void add(String name){...}执行这个方法时,当前对象被锁定!
public synchronized void add(String name){...}等同于public void add(String name){synchronized(this);}

Tuesday, April 14, 2009

do the active menu in symfony

*The symfony sentence to get present module name

$module_name = sfContext::getInstance()->getModuleName();


For templates

$module_name = $sf_context->getModuleName();

$module_name = $sf_params->get('module');


Example: contents of $module_name:'index'

*The symfony sentence to get present action name

action_name = sfContext::getInstance()->getActionName();


For templates

$action_name = $sf_context->getActionName();

$action_name = $sf_params->get('action');


Example: contents of $action_name:'edit'(its initial is returned in a small letter)

The article is from: http://it.kndb.net/entry/show/id/250

Friday, March 6, 2009

在网络浏览器中查看 PDF

在网络浏览器中查看 PDF

您可以在支持的网络浏览器查看 PDF,或者您可以设置您的 Acrobat 的“因特网”首选项来打开链接或在独立的 Acrobat 窗口下载 PDF 文件。如果您在 Acrobat 浏览器外面打开 PDF,您无法使用“快速 Web 查看”,在浏览器中的表单提交或者在网页上的搜索高亮。

由于键盘命令可以映射到网络浏览器某些 Acrobat 快捷键可能不可用。此时,您可能需要使用在 Acrobat 的工具栏,而不是浏览器工具栏或菜单栏中的工具和命令。例如,要打印 PDF 文档,您需要使用在 Acrobat 工具栏中的“打印”按钮,而不是浏览器中的“打印”命令的打印按钮。(在 Internet Explorer 中,您可以选择 Internet Explorer 工具栏上的“文件”>“打印”,“编辑”>“复制”,和“编辑”>“查找”。)

重要说明: (Mac OS)如果您已在系统中安装了 Adobe Reader 以及 Acrobat,Safari 继续使用 Adobe Reader 在浏览器中打开 PDF。要重新配置 Safari 来使用 Acrobat,您须退出 Safari 和所有版本的 Acrobat 或 Adobe Reader,再次启动 Acrobat,然后在运行 Acrobat 时启动 Safari。

因特网首选项

要打开因特网首选项,请选择“编辑”>“首选项”(Windows)或“Acrobat”>“首选项”(Mac OS),然后选择左边的“因特网”。

“在浏览器中显示 PDF”
在浏览器窗口中显示从因特网打开的 PDF。 如果未选定本选项,则 PDF 会在单独的 Acrobat 窗口中打开。在 Mac OS,如果您已安装 Adobe Reader 和 Acrobat 您可以选择要使用的相应的应用程序和相应的版本。
允许快速 Web 查看
从因特网上分页下载 PDF 来查看。如果未选定本选项,则在其显示之前下载整个 PDF。如果您要在后台继续下载整个 PDF,在您查看第一页请求的信息期间,请同时选定“允许在后台智能下载”选项。
允许在后台智能下载
允许在第一个请求的页面显示之后,继续从因特网下载 PDF。当其它任务,例如翻阅文档执行初始化任务时,后台下载会被中断。
连接速度
请从菜单选择连接速度。本设置也被 Multimedia 增效工具使用。
因特网设置[或网络设置]
在您的计算机上单击来打开因特网或网络连接对话框或面板。有关更详细信息请您咨询操作系统“帮助”,您的因特网服务提供商或您的本地网络管理员。

Sunday, March 1, 2009

MYSQL错误查询

1005:创建表失败
1006:创建数据库失败
1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1009:不能删除数据库文件导致删除数据库失败
1010:不能删除数据目录导致删除数据库失败
1011:删除数据库文件失败
1012:不能读取系统表中的记录
1020:记录已被其他用户修改
1021:硬盘剩余空间不足,请加大硬盘可用空间
1022:关键字重复,更改记录失败
1023:关闭时发生错误
1024:读文件错误
1025:更改名字时发生错误
1026:写文件错误
1032:记录不存在
1036:数据表是只读的,不能对它进行修改
1037:系统内存不足,请重启数据库或重启服务器
1038:用于排序的内存不足,请增大排序缓冲区
1040:已到达数据库的最大连接数,请加大数据库可用连接数
1041:系统内存不足
1042:无效的主机名
1043:无效连接
1044:当前用户没有访问数据库的权限
1045:不能连接数据库,用户名或密码错误
1048:字段不能为空
1049:数据库不存在
1050:数据表已存在
1051:数据表不存在
1054:字段不存在
1065:无效的SQL语句,SQL语句为空
1081:不能建立Socket连接
1114:数据表已满,不能容纳任何记录
1116:打开的数据表太多
1129:数据库出现异常,请重启数据库
1130:连接数据库失败,没有连接数据库的权限
1133:数据库用户不存在
1141:当前用户无权访问数据库
1142:当前用户无权访问数据表
1143:当前用户无权访问数据表中的字段
1146:数据表不存在
1147:未定义用户对数据表的访问权限
1149:SQL语句语法错误
1158:网络错误,出现读错误,请检查网络连接状况
1159:网络错误,读超时,请检查网络连接状况
1160:网络错误,出现写错误,请检查网络连接状况
1161:网络错误,写超时,请检查网络连接状况
1062:字段值重复,入库失败
1169:字段值重复,更新记录失败
1177:打开数据表失败
1180:提交事务失败
1181:回滚事务失败
1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库
1205:加锁超时
1211:当前用户没有创建用户的权限
1216:外键约束检查失败,更新子表记录失败
1217:外键约束检查失败,删除或修改主表记录失败
1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器
1227:权限不足,您无权进行此操作
1235:MySQL版本过低,不具有本功能