我需要OUTER JOIN在JPA中由两个实体组成(说出主要,详细信息),但是这个问题是在实体级别上没有关系(并且我不想添加它)。
@Entity
class Master
{
@Column(name="altKey")
Integer altKey;
}
@Entity
class Detail
{
@Column(name="altKeyRef")
@Basic (optional = true)
Integer altKeyRef;
}
Run Code Online (Sandbox Code Playgroud)
SELECT m, d FROM Master m OUTER JOIN ????? d.altKeyRef = m.altKey
Run Code Online (Sandbox Code Playgroud) 我有以下查询,但我不知道如何在表1上进行左外连接.
var query = (from r in table1
join f in table2
on r.ID equals f.ID
select new
{
r.ID,
r.FirstName,
r.LastName,
FirstNameOnRecord =
(f != null ? f.FirstName : string.Empty),
LastNameOnRecord =
(f != null ? f.LastName : string.Empty),
NameChanged =
(f != null
? (f.FirstName.CompareTo(r.FirstName) == 0
&& f.LastName.CompareTo(r.LastName) == 0)
: false)
}).ToList();
Run Code Online (Sandbox Code Playgroud) 我正在使用PostgreSQL 8.4.6与CentOS 5.5,并有一个用户表:
# select * from pref_users where id='DE2';
id | first_name | last_name | female | avatar | city | lat | lng | login | last_ip | medals | logout
-----+------------+-----------+--------+------------------+---------------------+-----+-----+----------------------------+---------+--------+----------------------------
DE2 | Alex | | f | 2_1280837766.jpg | ?. ????? ? ???????? | | | 2011-01-02 19:26:37.790909 | | | 2011-01-02 19:29:30.197062
(1 row)
Run Code Online (Sandbox Code Playgroud)
另一张表列出了他们每周在游戏中赢得的"虚拟货币":
# select * from pref_money where id='DE2';
id | money | yw
-----+-------+---------
DE2 | 66 | 2010-48
(1 row) …Run Code Online (Sandbox Code Playgroud) 我试图将以下SQL转换为Hibernate DetachedCriteria:
SELECT
students0_.courseId AS courseId2_1_,
students0_.studentId AS studentId1_,
student1_.id AS id3_0_,
student1_.href AS href3_0_,
student1_.created AS created3_0_,
student1_.email AS email3_0_,
student1_.enabled AS enabled3_0_,
student1_.firstName AS firstName3_0_,
student1_.lastAccessed AS lastAcce8_3_0_,
student1_.lastName AS lastName3_0_,
student1_.password AS password3_0_,
student1_.role AS role3_0_,
student1_.username AS username3_0_
FROM
course_students students0_
INNER JOIN
users student1_
ON students0_.studentId=student1_.id
WHERE
students0_.courseId IN (
SELECT
this_.id
FROM
courses this_
LEFT OUTER JOIN
assignments assignment2_
ON this_.id=assignment2_.courseId
AND (
assignment2_.availabilityType='Available'
OR (
assignment2_.availabilityType='Range'
AND assignment2_.endDate>= NOW()
AND assignment2_.startDate<= NOW()
) …Run Code Online (Sandbox Code Playgroud) 我知道确实没有什么区别,但是'LEFT JOIN'是ANSI表格还是有任何RDBMS会失败'LEFT JOIN'并要求'LEFT OUTER JOIN'.[我在这里问,所以我可以保存几次点击,填写表格等,以获得正确的ANSI标准!]
为什么这个sql查询只显示结果,如果他们在users_warnings中只有一行?
SELECT
u.id,
uw.warning
FROM
users u
INNER JOIN users_warnings uw ON (
u.id = uw.uID
)
LIMIT 21
Run Code Online (Sandbox Code Playgroud)
我希望向所有用户显示,但也会抓取users_warnings中的"警告"列,如果有的话.
一个看似简单的查询,我无法工作......
两个桌子的房间和可用性
Room [id, title, beds]
Availability [room_id, date, bed_delta]
Run Code Online (Sandbox Code Playgroud)
客房配有固定的最多床位数.可用性描述Room.beds修改期间(向上或向下).
我正在尝试构建一个查询,对于给定的房间和给定的开始日期和持续时间将总和可用的床.
例如:
如果添加了与此日期时间范围重叠的另一个可用时段并进一步将床减少1,则预期结果为0.
感觉就像一个相对简单的查询:
即
SELECT r.beds - coalesce(sum(a.bed_delta), 0) as beds_free
FROM room r
LEFT OUTER JOIN availability a ON (r.id = a.room_id)
WHERE date = '2012-01-01 09:00:00+01:00'
AND r.id = 2
GROUP BY r.id;
Run Code Online (Sandbox Code Playgroud)
此查询仅在匹配的行中返回availability.我期望的是id为== 2的房间的单行.
左连接和内连接在性能方面有什么区别吗?我使用SQL Server 2012.
我不知道如何解决这个问题,我唯一想到的就是蛮力循环,但是我什至不确定如何以data.table一种明智的方式循环遍历整个行。
我有一个双键data.table和一个基于这些键中第一个的相关矩阵。我需要通过查找任何给定对的相关性来建立所有元素的完整相关性矩阵,如果第二个键不匹配,则相关性为零。
简化示例:
library(data.table)
DT = data.table(Key1 = c("A", "A", "A", "B", "B", "C", "C"), Key2 = c(1,2,3,2,3,3,4), OtherData = "Irrelevant")
setkey(DT, Key2, Key1)
M = matrix(c(1.0, 0.4, 0.3,
0.4, 1.0, 0.2,
0.3, 0.2, 1.0), nrow = 3)
Run Code Online (Sandbox Code Playgroud)
所以我们的起始data.table看起来像:
> DT
Key1 Key2 OtherData
1: A 1 Irrelevant
2: A 2 Irrelevant
3: B 2 Irrelevant
4: A 3 Irrelevant
5: B 3 Irrelevant
6: C 3 Irrelevant
7: C 4 Irrelevant
Run Code Online (Sandbox Code Playgroud)
当A,B和C共享相同的Key2值时,它们的预定义相关矩阵由M给出:
> M
[,1] …Run Code Online (Sandbox Code Playgroud) 我有一个名为的实体PointsComptage.php,另一个名为Compteurs.php.
这是他们之间的关系:
// Compteurs.php
/**
* @var \PointsComptage
*
* @ORM\ManyToOne(targetEntity="PointsComptage", inversedBy="compteurs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="pointscomptage_id", referencedColumnName="id")
* })
*/
private $pointsComptage;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="ParametresMesure", mappedBy="compteurs")
*/
private $parametresMesure;
/* ... */
// PointsComptage.php
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="Compteurs", mappedBy="pointsComptage")
*/
private $compteurs;
/* ... */
Run Code Online (Sandbox Code Playgroud)
这是我的存储库实体中的查询,用于恢复具有一个pointComptage属性的compteurs:
$queryBuilder = $this->_em->createQueryBuilder();
$queryBuilder
->select ('c')
->from('MySpaceMyBundle:Compteurs', 'c')
->leftJoin('c.pointsComptage', 'pc')
->join('c.parametresMesure', 'pm')
->join('pm.typesUnite', 'tu')
->join('pm.typesParametre', 'tp')
->where('c.pointsComptage = pc.id')
->andWhere('pm.compteurs = c.id')
->andWhere('pm.typesUnite …Run Code Online (Sandbox Code Playgroud) outer-join ×10
left-join ×4
inner-join ×2
postgresql ×2
sql ×2
ansi-sql ×1
c# ×1
data.table ×1
doctrine-orm ×1
hibernate ×1
join ×1
jpa ×1
linq ×1
matrix ×1
mysql ×1
r ×1
sql-server ×1
symfony ×1