我有三张桌子:R,S和P.
表R通过外键与S连接; 有应该是S中至少一个的记录,所以我可以加入:
SELECT
*
FROM
R
JOIN S ON (S.id = R.fks)
Run Code Online (Sandbox Code Playgroud)
如果在S中没有记录,那么我没有行,这没关系.
然后表S与P连接,其中记录是P可能存在也可能不存在并且与S连接.
所以我这样做
SELECT
*
FROM
R
JOIN S ON (S.id = R.fks)
LEFT JOIN P ON (P.id = S.fkp)
Run Code Online (Sandbox Code Playgroud)
如果我想将第二个JOIN绑定到S而不是R,如果我可以使用括号,该怎么办?
SELECT
*
FROM
R
JOIN (S ON (S.id = R.fks) JOIN P ON (P.id = S.fkp))
Run Code Online (Sandbox Code Playgroud)
或者这是R,S和P之间笛卡尔积的自然行为?
函数式编程中的一般函数是什么样的?
有人说"我们没有物体,但我们有更高阶的功能".更高阶的函数会替换对象吗?
在编写面向对象的应用程序时,我尝试从更一般的概念转向更详细的概念,很多时候.如果我尝试在函数式编程中这样做,我是否需要更多高阶函数?
我在下面的评论中遇到过几次"不兼容类型"错误,并且从未对Delphi 2007中没有直接支持的原因感到满意:
program Project1; {$APPTYPE CONSOLE}
type TCharArray = array of Char;
procedure DoArray(Chars: array of Char);
begin
end;
function ReturnTCharArray: TCharArray;
var CharArray: TCharArray;
begin
Result := CharArray;
end;
begin
DoArray(ReturnTCharArray); // [DCC Error] Project1.dpr(18): E2010 Incompatible types: 'Array' and 'TCharArray'
end.
Run Code Online (Sandbox Code Playgroud)
是不是可以将数组类型"别名"为另一个彼此兼容的数组类型?假设我无法更改DoArray的声明(它是第三方库的一部分),我如何编写一个返回与DoArray的param兼容的char数组的函数?直截了当的"函数ReturnAChar:Char数组;" 导致"标识符预期但发现'ARRAY'"错误.我甚至尝试将返回数组的函数更改为带有var"array of char"pram的过程,但是这也不允许在过程中设置"Char数组"参数的长度("Constant对象不能传递作为var参数").
我今天写了这个简单的程序,但我发现cin.get()
除非有2个程序,否则拒绝工作.有任何想法吗?
#include <iostream>
using namespace std;
int main(){
int base;
while ((base < 2) || (base > 36)){
cout << "Base (2-36):" << endl;
cin >> base;
}
string base_str = "0123456789abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < base; i++){
for (int j = 0; j < base; j++){
for (int k = 0; k < base; k++){
cout << base_str[i] << base_str[j] << base_str[k] << endl;
}
}
}
cin.get();
cin.get();
}
Run Code Online (Sandbox Code Playgroud)
如果我cin.get()
在嵌套循环之前移动到一个循环,则循环运行然后暂停.如果我拿出一个cin.get() …
我正在为我想要安装的软件包编写WXS文件.为了简单起见,假设我想安装1个文件然后我想对它执行一个命令(在我的例子中,它是一个公共GPG密钥,我想在安装完成后导入它).以下是我的WXS文件的相关部分:
<CustomAction Id="ImportKey" Directory="INSTALLDIR"
ExeCommand="[SystemFolder]cmd.exe /C gpg --import keyfile.key"
Return="check" />
<!-- Install file keyfile.key into C:\GnuPG -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR" Name="GnuPG">
<Component Id="GnuPGConfiguration" Guid="E9469F1C-A875-1014-A3B3-DEF3264B13C4">
<File Name="keyfile.key" Id="KeyfileKey" />
</Component>
</Directory>
</Directory>
<Feature Id="GnuPGConfiguration" Level="1" Title="GnuPG Configuration">
<ComponentRef Id="GnuPGConfiguration" />
</Feature>
<!-- Run custom action after files are installed -->
<InstallExecuteSequence>
<Custom Action="ImportKey" After="InstallFiles">NOT Installed AND NOT PATCH</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)
我可以成功构建MSI.安装时,我使用msiexec并打开日志记录.它说安装在自定义操作上失败,并在日志中找到正确的命令.手动运行它.如果我注释掉命令的执行,则文件安装在正确的位置(安装后存在C:\ GnuPG\keyfile.key).
我尝试运行dir ant将其输出重定向到文件,而不是运行我的GPG命令.查看它,我可以看到keyfile.key不在C:\ GnuPG中的文件中.似乎该命令在安装文件之前运行.
关于我做错了什么的任何想法?
我是开发几个webapp网站的唯一开发人员.我在subversion中有它们,但我没有使用项目管理工具.
我最近得到了redmine,我想在那里设置项目.我正在寻找的是如何在Redmine中构建这两个项目的建议.从我可以收集到的,结构是Project-> subproject.所以我想把它映射到我的待办事项列表结构.从我的待办事项列表中,有三种任务:新功能,错误修复和维护(不是完全错误的修复,但真正需要清理的东西).
我应该将每个webapp作为顶级项目,将功能,错误和维护作为子项目吗?还有其他组织项目的方式吗?例如,在颠覆操作手册,他们建议有project/trunk
,project/branches
,project/testing
,project/releases
,等在那里为在管理平台的工作类似的指引?
我有一个英文Windows 2003服务器,启用了亚洲语言支持.命令窗口可用的两种唯一字体(cmd设置)是raster和lucida console.这一个或另一个都没有正确显示汉字(显示为问号).
是否有解决方案让它们显示出来?在写入控制台之前,我的应用程序中是否必须进行一些转换?
我现在正在写UTF8,对于一些非ASCII字符(如öäüß)也有效.写入控制台的源代码具有正确的数据(可以在调试器中正确查看汉字).如果重要,我正在用C#编写应用程序.
编辑:我发现这个链接解释了问题背后的问题,并为C#提供了一个解决方案(涉及本机调用).这适用于.NET 4.5(我未经测试)
我试图增加Android手机麦克风的增益,这样它就能听到非常微小的声音.这可能吗?你能帮我解决这个问题吗?
在我的工作期间,我通常必须在更改主键并为其提供新戳并可能更改外键时复制行.
问题是我不想在做的时输入所有列名;
insert into table_name
select pk_seq.nextval,
'foreign-key',
col3,
col4...col51
from table_name
where pk_id = "original_primary_key"
Run Code Online (Sandbox Code Playgroud)
如果我在select语句中执行*,我将无法更新前2列...
有什么方法可以做我想做的吗?
我正在阅读维基百科对依赖性倒置原则的定义,它使用两个术语高级模块和低级模块,我无法弄清楚.
他们是什么,依赖倒置原则与他们有什么关系?
language-agnostic dependencies module inversion-of-control dependency-inversion