我有4个不同的表,我想加入.这些表的结构如下:
TableA - aID | nameA | dID
TableB - bID | nameB | cID | aID
TableC - cID | nameC | date
TableD - dID | nameD
Run Code Online (Sandbox Code Playgroud)
从表A开始,我理解如何使用b来连接表a和c,因为b具有这些表的主键.我希望能够在TableA上加入表TableD.下面是我的SQL语句,它首先连接表A和B,然后将它连接到C:
SELECT TableA.*, TableB.*, TableC.* FROM (TableB INNER JOIN TableA
ON TableB.aID= TableA.aID)
INNER JOIN TableC ON(TableB.cID= Tablec.cID)
WHERE (DATE(TableC.date)=date(now()))
Run Code Online (Sandbox Code Playgroud)
当我尝试添加另一个连接时,要包含D,我得到一个'TableD'未知的错误:
SELECT TableA.*, TableB.*, TableC.*, TableD.* FROM (TableB INNER JOIN TableA
ON TableB.aID= TableA.aID)
INNER JOIN TableC ON(TableB.cID= Tablec.cID)
INNER JOIN TableA ta ON(ta.dID= TableD.dID)
WHERE (DATE(TableC.date)=date(now()))
Run Code Online (Sandbox Code Playgroud) 嗨很多天我一直在研究MySQL中的这个问题,但我无法弄明白.你们有什么建议吗?
基本上,我有一个类别表,其域名包括:id,name(类别名称)和parent(类别的父ID).
示例数据:
1 Fruit 0
2 Apple 1
3 pear 1
4 FujiApple 2
5 AusApple 2
6 SydneyAPPLE 5
....
Run Code Online (Sandbox Code Playgroud)
有许多级别,可能超过3个级别.我想创建一个sql查询,根据他的层次结构对数据进行分组:parent> child> grandchild>等.
它应该输出树结构,如下所示:
1 Fruit 0
^ 2 Apple 1
^ 4 FujiApple 2
- 5 AusApple 2
^ 6 SydneyApple 5
- 3 pear 1
Run Code Online (Sandbox Code Playgroud)
我可以使用单个SQL查询执行此操作吗?我尝试过并且确实有效的替代方案如下:
SELECT * FROM category WHERE parent=0
Run Code Online (Sandbox Code Playgroud)
在此之后,我再次遍历数据,并选择parent = id的行.这似乎是一个糟糕的解决方案.因为它是mySQL,所以不能使用CTE.
在热切加载的文档中,声明:
如果您急切地使用指定的:limit选项加载关联,它将被忽略,返回所有关联的对象:
class Picture < ActiveRecord::Base
has_many :most_recent_comments, :class_name => 'Comment',
:order => 'id DESC', :limit => 10
end
Run Code Online (Sandbox Code Playgroud)
Picture.find(:first,:include =>:most_recent_comments).most_recent_comments#=>返回所有相关注释.
如果是这种情况,那么实现加载"限制"的最佳方法是什么?
假设我们急切地将最近10篇博客帖子加载到博客的首页上,我们显然不希望它们都是如此,那么是否应该指定帖子集合的限制和排序?
除此之外,可以在深度加载的元素上指定相同的条件 - 例如,仅在每篇博客文章中显示前三个评论吗?
Blog.find(:blog_id, :include => {:posts => :comments } )
Run Code Online (Sandbox Code Playgroud) 我想比较同一个表中的两列.我希望能够返回两列具有相同值的所有行.
我正在寻找类似的东西SELECT * FROM FOO WHERE C1 = C4.
因此,在下面的示例中,我将只返回第一行:
C1 || C2 || C3 || C4
--------------------------
1 || a || b || 1
2 || a || b || 4
3 || b || d || 2
4 || b || d || 2
Run Code Online (Sandbox Code Playgroud)
如果重要,我正在使用SQLite(更具体地说WebSQL).
我有一个纬度和经度值列表,我试图找到它们之间的距离.使用标准的大圆方法,我需要找到:
acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2) * cos(long2-long1))
Run Code Online (Sandbox Code Playgroud)
并将其乘以我正在使用的单位的地球半径.只要我们取acos的值在[-1,1]范围内,这就有效.如果它们甚至略微超出此范围,它将返回NaN,即使差异是由于四舍五入.
我遇到的问题是,有时,当两个纬度/长度值相同时,这会给我一个NaN错误.并非总是如此,即使对于同一对数字,但在列表中总是相同的数字.例如,我有一个人停在沙漠中的一条路上:
Time |lat |long
1:00PM|35.08646|-117.5023
1:01PM|35.08646|-117.5023
1:02PM|35.08646|-117.5023
1:03PM|35.08646|-117.5023
1:04PM|35.08646|-117.5023
Run Code Online (Sandbox Code Playgroud)
当我计算连续点之间的距离时,例如,第三个值将始终为NaN,即使其他点不是.这似乎是R舍入的一个奇怪的错误.
我在下面有表A,其中对于每个唯一ID,有三个代码具有一些值.
ID Code Value
---------------------
11 1 x
11 2 y
11 3 z
12 1 p
12 2 q
12 3 r
13 1 l
13 2 m
13 3 n
Run Code Online (Sandbox Code Playgroud)
我有第二张表B,格式如下:
Id Code1_Val Code2_Val Code3_Val
Run Code Online (Sandbox Code Playgroud)
每个唯一ID只有一行.我想从第一个表A中为第一个表中的每个id填充第二个表B.
对于上面的第一个表A,第二个表B应该如下:
Id Code1_Val Code2_Val Code3_Val
---------------------------------------------
11 x y z
12 p q r
13 l m n
Run Code Online (Sandbox Code Playgroud)
如何在单个SQL查询中实现此目的?
对于我的生活,我似乎可以搞清楚
INSERT INTO category SET CategoryName = 'Hardware_1',
Category = 'HARDWARE', Status = '1', Order = '1'
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax
to use near 'Order = '1'' at line 1
CREATE TABLE `category` (
`CategoryID` int(11) NOT NULL AUTO_INCREMENT,
`CategoryName` varchar(255) NOT NULL,
`Category` varchar(255) NOT NULL,
`Status` tinyint(4) NOT NULL,
`Order` int(11) NOT NULL,
PRIMARY KEY (`CategoryID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud) 我创建了一个on update触发器.
如果我在一个语句中更新表中的5条记录,触发器将执行多少次?如果我有多个语句更新单个事务中的记录,它会改变吗?
在所有交易完成后,它是执行5次还是只执行一次?
我有一个有趣的结果,不明白为什么.
SELECT *
FROM items im
WHERE ItemNumber
Run Code Online (Sandbox Code Playgroud)
ItemNumber是一个varchar(50).
此查询的结果是返回ItemNumber以数字开头的所有项目.如果ItemNumber以字母开头,则将其排除.
有没有人解释为什么查询以这种方式交互?
我正在寻求一些帮助来理解如何实现二维核密度方法,具有各向同性方差和二元正态核,但不是使用典型距离,因为数据位于物体的表面上地球,我需要使用大圆距离。
我想在 R 中复制这一点,但我无法弄清楚如何对任何内置估计器使用除简单欧几里德距离之外的距离度量,因为它使用带有卷积的复杂方法来添加内核。有谁有办法编写任意内核吗?
sql ×6
mysql ×4
r ×2
activerecord ×1
db2 ×1
join ×1
optimization ×1
precision ×1
r-faq ×1
sql-update ×1
statistics ×1
triggers ×1