我有一个名为tblAccInfo的表,下面是表数据.我需要如下输出.
Input
PolicyNumber BankAc StorageDate VerNum
6003210400 123 2012-01-01 1
6003210400 164 2012-01-03 2
6003210400 860 2012-01-05 3
6004317654 301 2012-02-05 1
6004317654 615 2012-03-01 2
6004317654 253 2012-03-12 3
6004317654 887 2012-04-03 4
Run Code Online (Sandbox Code Playgroud)
OUTPUT
PolicyNumber IntialBankAc IntialSDate VerNum LatestBankAc LatestSDate VerNum
6003210400 123 2012-01-01 1 860 2012-01-05 3
6004317654 301 2012-02-05 1 887 2012-04-03 4
Run Code Online (Sandbox Code Playgroud)
我试过下面的自我加入,但没有成功.请帮我解决这个问题.
Select DISTINCT
P.PolicyNumber,
P.BankAc [IntialBankAc],
P.StorageDate IntialSDate],
P.VerNum,
P1.BankAc [LatestBankAc],
P1.StorageDate [LatestSDate],
P1.VerNum
FROM tblAccInfo P
INNER JOIN tblAccInfo P1
ON P1.PolicyNumber=P.PolicyNumber
AND …Run Code Online (Sandbox Code Playgroud) 我有SQLAlchemy和别名的问题.我正在尝试在名为Task的表上进行自联接,但SQLAlchemy将我的别名表与非别名混淆.
我的查询要复杂得多,但这是一个简化版本:
baseTask = aliased(model.Task)
query = model.session.query(model.Task.name)\
.select_from(baseTask)\
.join((model.Task, model.Task.taskid==baseTask.taskid))
The resulting query looks like this:
SELECT task_1.name
FROM task AS task_1 INNER JOIN task ON task_1.taskid = task_1.taskid
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它在select和join条件下混淆了无别名表和别名task_1.
通过在两个表上使用别名,它可以工作:
baseTask = aliased(model.Task)
task = aliased(model.Task)
query = model.session.query(task.name)\
.select_from(baseTask)\
.join((task, task.taskid==baseTask.taskid))
This gives the desired result:
SELECT task_1.name
FROM task AS task_2 INNER JOIN task AS task_1 ON task_1.taskid = task_2.taskid
Run Code Online (Sandbox Code Playgroud)
当我在两个表上使用别名时,它不会混淆它们,结果查询正是我想要的.问题是由于各种原因我不能在我加入的表上使用别名,这是由于应用程序设计中动态生成查询.
我正在使用SQLAlchemy 0.6.8,我试图升级到0.7.9,但我仍然遇到了这个问题.关于如何解决这个问题的任何想法?
请考虑下表:
mysql> select * from phone_numbers;
+-------------+------+-----------+
| number | type | person_id |
+-------------+------+-----------+
| 17182225465 | home | 1 |
| 19172225465 | cell | 1 |
| 12129876543 | home | 2 |
| 13049876543 | cell | 2 |
| 15064223454 | home | 3 |
| 15064223454 | cell | 3 |
| 18724356798 | home | 4 |
| 19174335465 | cell | 5 |
+-------------+------+-----------+
Run Code Online (Sandbox Code Playgroud)
我试图找到那些有家用电话而不是电池的人.
此查询有效:
mysql> select h.*
-> from phone_numbers …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个社交网络风格的友谊模型,我没有太多的运气试图找出那里可用的插件.如果我自己做的话,我想我会更好地学习Rails.所以这就是我所拥有的:
class User < ActiveRecord::Base
has_many :invitee_friendships ,
:foreign_key => :friend_id,
:class_name => 'Friendship'
has_many :inviter_friends,
:through => :invitee_friendships
has_many :inviter_friendships ,
:foreign_key => :user_id,
:class_name => 'Friendship'
has_many :invited_friends,
:through => :inviter_friendships
end
class Friendship < ActiveRecord::Base
belongs_to :user
//I think something needs to come here, i dont know what
end
Run Code Online (Sandbox Code Playgroud)
在irb当我尝试这样的:
friend1 = Friend.create(:name => 'Jack')
friend2 = Friend.create(:name => 'John')
bff = Friendship.create(:user_id =>1, :friend_id => 2)
f1.invited_friends
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
ActiveRecord::HasManyThroughSourceAssociationNotFoundError:
Could not find the source …Run Code Online (Sandbox Code Playgroud) 对项目对进行一些评估是一项常见任务:示例:重复数据删除,协同过滤,类似项目等.这基本上是具有相同数据源的自连接或跨产品.
我正在使用C#3.5我有一个IList<MyItemLinkProperty>,MyItemLinkProperty表示项目与其属性(一个或多个)之间的链接.它有ItemId,PropertyId,PropertyValue.在此列表中ItemId可以多次出现,因为项目可以具有许多属性,颜色,大小等(这是一个与性能相关的问题,我有这种列表并且没有映射到项目实体).
ItemID PropId PropValue
itemProperty1 = { 1001, 1, 'Red' }
itemProperty2 = { 1001, 2, 'Small' }
itemProperty3 = { 1002, 1, 'Red' }
itemProperty4 = { 1002, 3, 'Medium' }
itemProperty5 = { 1003, 4, 'Green' }
itemProperty6 = { 1003, 2, 'Small' }
Run Code Online (Sandbox Code Playgroud)
现在我需要找到所有具有属性A和属性B的项目.例如'red'和'small'.这应该给我ItemID1001具有这两个属性.
在伪代码中我想我是在"给我属性id为1或2且项目ID相同的项目".然后我知道有两个具有这些属性的项目.
我在想一个linq查询会这样做.但是没有得到这个工作并陷入困境.也许我在这里阻止了我的思绪,过度思考它并使其过于复杂......
为此提供最佳解决方案的任何提示?
示例mysql查询:
SELECT
a1.*
FROM
agreement a1
LEFT JOIN agreement a2 on a1.agreementType = a2.agreementType and a2.id > a1.id
WHERE
a2.id is null
Run Code Online (Sandbox Code Playgroud)
查询的目的是获取返回类型的最后一个协议.有很多类型,我只想要列出每种类型的最新协议.我上面的示例查询按预期工作,但没有进入DQL.
如果我没有引用自身的列,我将如何在DQL中执行此操作?请注意,"agreementType"也是不同表的外键.
我在ActiveRecord中为我的模型进行了自我连接,如下所示:
class Employee < ActiveRecord::Base
has_many :subordinates, class_name: "Employee",
foreign_key: "manager_id"
belongs_to :manager, class_name: "Employee"
end
Run Code Online (Sandbox Code Playgroud)
如果我删除了Manager行,我希望将该Manager下的所有员工的'manager_id'外键值设置为NULL.这是ActiveRecord隐式处理的东西,还是需要在某处定义的东西.
我有一个包含这样数据的表
+-------------+--------------+------------+----------------+
| CustomerSID | StartDateSID | EndDateSID | MarketingOptIn |
+-------------+--------------+------------+----------------+
| 12345 | 20101019 | 20131016 | Y |
| 12345 | 20131017 | 20140413 | Y |
| 12345 | 20140414 | 20140817 | N |
| 12345 | 20140818 | 20141228 | N |
| 12345 | 20141229 | 20150125 | Y |
| 12345 | 20150126 | 0 | Y |
+-------------+--------------+------------+----------------+
Run Code Online (Sandbox Code Playgroud)
我需要在这个表的顶部创建一个视图,使数据格式化为Flag的以下格式,基本上是Flag为Y或N的持续时间.(EndDateSID - 0当前是活动的,所以今天的日期)
+-------------+--------------+------------+----------------+
| CustomerSID | StartDateSID | EndDateSID | MarketingOptIn | …Run Code Online (Sandbox Code Playgroud) 我有一张桌子:
Parent Child Educated
'P1', 'C1', 'YES'
'P1', 'C2', 'YES'
'P1', 'C3', 'NO'
'P2', 'C11', 'YES'
'P2', 'C12', 'NO'
'P3', 'C21', 'YES'
'P3', 'C22', 'YES'
'P4', 'C31', 'NO'
'P4', 'C32', 'NO'
Run Code Online (Sandbox Code Playgroud)
现在,我需要找到所有孩子都接受过教育的父母,即 Educated='YES'。
就像在上面的情况下父'P3'
任何人都可以提出一个查询来获取这个