我有一个相当复杂的SQL查询,我很确定我无法用ARel完成(Rails 3.0.10)
查看链接,但它有一些连接和一个where exists子句,我很确定对于ARel来说太复杂了.
然而我的问题是,在此查询过于复杂之前,使用ARel我可以使用includes其他模型来避免n + 1问题.既然我正在使用find_by_sql,那就不行了includes.我仍然希望能够获取这些记录并将它们附加到我的模型实例,方式includes如此,但我不太确定如何实现这一点.
有人能指出我正确的方向吗?
我还没有尝试在同一个查询中加入它们.我只是不确定它们将如何映射到对象(即,如果ActiveRecord将它们正确映射到正确的类)
我知道当使用includesActiveRecord实际进行第二次查询时,会以某种方式将这些行附加到原始查询中的相应实例.有人可以告诉我如何做到这一点吗?或者我是否需要加入相同的查询?
我正在尝试将Oracle数据库连接到Mathematica 8.另一个问题已经说明如何在MySQL数据库中完成它但它对我不起作用:
Needs["DatabaseLink"] AND conn = OpenSQLConnection[JDBC["MySQL(Connector/J)",
"yourserver/yourdatabase"], "Username" -> "yourusername", "Password" -> "yourpassword"]
Run Code Online (Sandbox Code Playgroud)
我桌面上可以找到以下信息:
filepath = "C:\oracle\ora92\network\ADMIN\tnsnames.ora"; HOST; PORT; username; password;
conn = OpenSQLConnection[JDBC["MySQL(Connector/J)", HOST], "Username" -> username, "Password" -> password]
Error message: JDBC::error:
Communications link failure The last packet sent successfully to the server was 0 milliseconds ago.
The driver has not received any packets from the server. >>
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何连接或继续?
如何编写一个oracle查询,它等同于informix中的以下查询:
select tab1.a,tab2.b,tab3.c,tab4.d
from table1 tab1,
table2 tab2 OUTER (table3 tab3,table4 tab4,table5 tab5)
where tab3.xya = tab4.xya
AND tab4.ss = tab1.ss
AND tab3.dd = tab5.dd
AND tab1.fg = tab2.fg
AND tab4.kk = tab5.kk
AND tab3.desc = "XYZ"
Run Code Online (Sandbox Code Playgroud)
我试过:
select tab1.a,tab2.b,tab3.c,tab4.d
from table1 tab1,
table2 tab2 LEFT OUTER JOIN (table3 tab3,table4 tab4,table5 tab5)
where tab3.xya = tab4.xya
AND tab4.ss = tab1.ss
AND tab3.dd = tab5.dd
AND tab1.fg = tab2.fg
AND tab4.kk = tab5.kk
AND tab3.desc = "XYZ"
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我获得正确的语法.
考虑以下:
我有两个表(Customers和Cases)定义如下:
**Customers**
CustomerId (PK)
CustomerName
CustomerPhone
**Cases**
CaseId (PK)
CaseManager
CaseNotes
Run Code Online (Sandbox Code Playgroud)
每个客户可以拥有无限量的案例,但每个案例只能属于一个客户.因此,为了将表相互关联,我将使用一个交集表(CustomerCases),它分别由每个表中的外键组成.
但是,我不能只将Customers表中的CustomerID作为Cases表的外键添加吗?我觉得我错过了什么.如果我选择不使用交叉表,是否有任何陷阱我应该注意?
我有一个包含2列整数的表.第一列表示起始索引,第二列表示结束索引.
START END
1 8
9 13
14 20
20 25
30 42
42 49
60 67
Run Code Online (Sandbox Code Playgroud)
简单到目前为止.我想要做的是将所有记录组合在一起:
START END
1 25
30 49
60 67
Run Code Online (Sandbox Code Playgroud)
记录可以跟在上一个结束索引的相同索引处开始,或者以1的边距开始:
START END
1 10
10 20
Run Code Online (Sandbox Code Playgroud)
和
START END
1 10
11 20
Run Code Online (Sandbox Code Playgroud)
将导致
START END
1 20
Run Code Online (Sandbox Code Playgroud)
我正在使用SQL Server 2008 R2.
任何帮助都会很棒
我在PostgreSQL数据库中构建了一系列视图,其中包含几个数组列.视图定义如下:
create view articles_view as
(select articles.*,
array(select row(people.*)::people
from people
where articles.spubid=people.spubid and
people.stype='Author' and
bactive='t'
order by people.iorder) as authors,
array(select row(people.*)::people
from people
where articles.spubid=people.spubid and
people.stype='Editor' and
bactive='t'
order by people.iorder) as editors,
array(select row(people.*)::people
from people
where articles.spubid=people.spubid and
people.stype='Reviewer' and
bactive='t'
order by people.iorder) as reviewers,
array(select row(status.*)::status
from status
where articles.spubid=status.spubid and
bactive='t') as status
from articles
where articles.bactive='t');
Run Code Online (Sandbox Code Playgroud)
基本上我想要做的是在'author'列上的iLike,以确定该数组中是否存在特定的用户ID.显然我不能在该数据类型上使用iLike,所以我需要找到另一种方法.
以下是'authors'数组中的数据示例:
{"(2373,t,f,f,\"2011-08-01 11:57:40.696496 \",/ Pubs/pubs_edit_article.php,\"2011-08-09 15:36:29.281833 \",000128343, A00592,作者,1,尼古拉斯,K.,Kreidberg,\ "\",123456789,T,管理员,A,A,A,0,\ "\") ""(2374,T,F,F,\ "2011-08-01 11:57:40.706617 …
在下面的查询中,我想在CASE的WHEN中添加一个AND条件,然后才可以这样做?
例如WHEN'r'和table1.name ="jones"那么'非常高'
SELECT table1.id, table1.name,
CASE table1.event
WHEN 'r' THEN 'very high'
WHEN 't' THEN 'very low'
ELSE (SELECT table2.risk FROM table2 WHERE table2.value <= table1.value
ORDER BY table2.value DESC LIMIT 1)
END AS risk
FROM table1
ORDER BY FIELD( table1.event, 'r', 'f', 't' ), table1.value DESC
Run Code Online (Sandbox Code Playgroud) 我在我的电脑上安装了免费版的sql server 2008(sql server management studio express edition).安装后我收到以下错误
create table permission denied in database 'master'
Run Code Online (Sandbox Code Playgroud)
我尝试了几次重新安装,但我一直得到同样的错误.当我检查
select user_account();
Run Code Online (Sandbox Code Playgroud)
它显示我以访客身份登录.我该如何解决这个问题?因为我不被允许创建新的登录.
我在SQL Server 2008中有一个数据库,一个特定的表将信息存储在字段中作为JSON编码的数组.我想知道有一种基于SQL的方法来选择JSON字段中的特定值吗?
当然,我可以选择字段并自己解析信息,但是如果可能的话,我试图避免这种情况.
提前致谢!
sql ×10
oracle ×3
arrays ×2
database ×2
sql-server ×2
arel ×1
connect ×1
join ×1
json ×1
mysql ×1
null ×1
outer-join ×1
phpmyadmin ×1
postgresql ×1