我正在使用 JPA 2.0、Hibernate 4.1.0.Final 和 MySQL 5.5.27。我想构造一个 JPA 查询,每行返回两个实体,并且我想执行右外连接。这两个实体是:
\n\n@Entity\n@Table(name = "user",\n uniqueConstraints = { @UniqueConstraint(columnNames = { "USER_NAME" }) }\n)\npublic class User implements Comparable<User>, Serializable\n{\n ...\n @Column(name = "first_name")\n @NotNull\n /* the first name of the User */\n private String firstName;\nRun Code Online (Sandbox Code Playgroud)\n\n和
\n\n@Entity\n@Table(name="code_user",\n uniqueConstraints = { \n @UniqueConstraint(columnNames = { "CODE_ID", "USER_ID" }) }\n)\npublic class CodeUser \n{\n\n @Id\n @NotNull\n @GeneratedValue(generator = "uuid-strategy")\n @Column(name = "ID")\n private String id;\n\n @ManyToOne\n @JoinColumn(name = "CODE_ID", nullable = false, updatable …Run Code Online (Sandbox Code Playgroud) 我们有以下 mysql 表(为了直奔主题而简化)
CREATE TABLE `MONTH_RAW_EVENTS` (
`idEvent` int(11) unsigned NOT NULL,
`city` varchar(45) NOT NULL,
`country` varchar(45) NOT NULL,
`ts` datetime NOT NULL,
`idClient` varchar(45) NOT NULL,
`event_category` varchar(45) NOT NULL,
... bunch of other fields
PRIMARY KEY (`idEvent`),
KEY `idx_city` (`city`),
KEY `idx_country` (`country`),
KEY `idClient` (`idClient`),
) ENGINE=InnoDB;
CREATE TABLE `compilation_table` (
`idClient` int(11) unsigned DEFAULT NULL,
`city` varchar(200) DEFAULT NULL,
`month` int(2) DEFAULT NULL,
`year` int(4) DEFAULT NULL,
`events_profile` int(10) unsigned NOT NULL DEFAULT '0',
`events_others` …Run Code Online (Sandbox Code Playgroud) 我需要编辑旧式 T-SQL 代码。
什么是=*意思?
这是什么*=意思?
我认为它们是 JOIN,但我不知道它们各自的 JOIN 类型是什么。
我的数据模型如下。UserPhone是必需的,但导航属性是可选的,只要 的User表可以为空:
public class Request
{
[Key]
public int Id {get;set;}
[Required]
public string UserPhone {get;set;}
[ForeignKey("UserPhone")]
public virtual User User {get;set;}
}
public class User
{
[Key]
public string UserPhone {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
sUser表在请求输入系统后填充。在输入请求和未填充用户之间的某个位置,我尝试获取用户的所有请求(如果存在)(外连接)。
db.Requests.Include(r=>r.User).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
这给了我零结果,因为 EF 进行了内部联接(我的UserPhone字段已定义并且是外键,并且它是请求表所必需的)。
如何正确定义映射以便能够使用包含映射?我需要这个,include因为我的案例涉及了更多的表,我想用手动连接来完成所有操作
我有一个 Kafka 主题,我希望其中的消息具有两种不同的键类型:旧的和新的。即"1-new", "1-old", "2-new", "2-old". 键是唯一的,但有些可能会丢失。
现在使用 Kotlin 和 KafkaStreams API,我可以记录那些具有相同密钥 ID 的新旧消息。
val windows = JoinWindows.of(Duration.of(2, MINUTES).toMillis())
val newStream = stream.filter({ key, _ -> isNew(key) })
.map({key, value -> KeyValue(key.replace(NEW_PREFIX, ""), value) })
val oldStream = stream.filter({ key, _ -> isOld(key) })
.map({key, value -> KeyValue(key.replace(OLD_PREFIX, ""), value) })
val joined = newStream.join(oldStream,
{ value1, value2 -> "$value1&$value2" }, windows)
joined.foreach({ key, value ->
log.info { "JOINED $key : $value" }
})
Run Code Online (Sandbox Code Playgroud)
现在我想知道由于某种原因在 …
我一直在搜索这个,我只是看不出我哪里出错了。我希望有人能帮我弄清楚。我有两张表,一张是零件号的所有销售订单 (SO),一张是零件号的所有采购订单 (PO)。我想将结果合并在一起。大多数情况下,每个零件的采购订单和销售订单数量不会相同。在此示例中,我有 2 个销售订单和 1 个采购订单。
Table 1 (SO)
Company Part SalesOrder
ABC 123 5530
ABC 123 6854
ABC 456 7772
ABC 456 6868
Table 2 (PO)
Company Part PurchaseOrder
ABC 123 9889
ABC 456 9308
ABC 456 9655
ABC 456 9774
Run Code Online (Sandbox Code Playgroud)
我希望看到:
Company Part SalesOrder PurchaseOrder
ABC 123 5530 9889
ABC 123 6854 NULL
ABC 456 7772 9308
ABC 456 6868 9655
ABC 456 NULL 9774
Run Code Online (Sandbox Code Playgroud)
但我看到:
Company Part SalesOrder PurchaseOrder
ABC 123 5530 9889
ABC 123 6854 …Run Code Online (Sandbox Code Playgroud) 一般来说,我认为"FULL OUTER JOIN被认为是有害的",以改变这句话.
背景:
http://weblogs.sqlteam.com/jeffs/archive/2007/04/19/Full-Outer-Joins.aspx
但我确实有一个特定的情况,它会非常方便:
鉴于:
CREATE VIEW Calcs(c1, c2, c3, fordate, ...other columns) AS
/* Complicated set of equations, etc. */
Run Code Online (Sandbox Code Playgroud)
和:
CREATE TABLE Overrides(c1, c2, c3, fordate)
Run Code Online (Sandbox Code Playgroud)
我需要调整上面的视图来遵循这个逻辑:
现在,通常我会做一个三部分查询:
CREATE VIEW Calcs AS ... (current logic)
CREATE VIEW CalcsWithOverrides AS
SELECT * FROM Calcs WHERE NOT EXISTS (match in Overrides)
UNION ALL
SELECT override.c1, override.c2, override.c3, …Run Code Online (Sandbox Code Playgroud) 外连接在我看来有点令人困惑.
有没有人可以让我清楚地了解外连接(右,左和全)?
我有这样的查询:
SELECT m...., a...., r....
FROM 0_member AS m
LEFT JOIN 0_area AS a ON a.user_id = (SELECT user_id
FROM `0_area`
WHERE user_id = m.id
ORDER BY sec_id ASC LIMIT 1)
LEFT JOIN 0_rank as r ON a.rank_id = r.id
WHERE m.login_userid = '$username'
Run Code Online (Sandbox Code Playgroud)
我们的想法是从0_area表中获取第一行,从而获得内部连接.但是,它没有按预期工作.
在0_area和0_member之间,0_member.id = 0_area.user_id.但是,有多行0_area.user_id,我希望行具有最低值sec_id.
有什么帮助吗?
在Oracle我有:
SELECT t2.Regkood, t2.naitatel, t2.naitafaks, t3.lahtiolekuaeg, t1.*
FROM table1 t1, table2 t2, table3 t3
WHERE t1.client = t2.client AND t1.client = t3.client(+) AND t1.client = 414246
Run Code Online (Sandbox Code Playgroud)
如何在SQL Server中获得相同的内容?
谢谢