我的数据库中有以下表(SQLite):
CREATE TABLE product (
id INTEGER NOT NULL,
name TEXT,
PRIMARY KEY (id)
)
CREATE TABLE feedback(
product INTEGER PRIMARY KEY,
score NUMERIC,
textnote VARCHAR(255),
FOREIGN KEY(product) REFERENCES product(id)
)
CREATE TABLE product_detail (
id INTEGER NOT NULL,
product INTEGER,
description TEXT,
url VARCHAR,
PRIMARY KEY (id),
FOREIGN KEY(product) REFERENCES product (id),
)
所以feedback
和product
是一对一的关系,product_detail
是和product
的一对一的关系。
我正在尝试为SQLite Hibernate 4编写一个查询,它将为我在一个表中提供来自3个表的所有属性。到目前为止,我所带来的只有这个:
String hql = "SELECT p.id, p.name, d.id, d.description, d.url " +
"FROM ProductDetail d INNER JOIN d.product AS p";
我正确地从product
和product_detail
中获得了我想要的值。如何将feedback
中的信息添加到查询中?我知道所有的产品至少有一个产品细节,但我不能对反馈说同样的话:大多数产品没有反馈。我想我应该用LEFT JOIN
,但我不知道怎么.注意,在使用Hibernate时,我拥有与应用程序中的表(Feedback
、ProductDetail
和Product
)相关的所有类。
发布于 2020-02-14 08:09:43
您还必须加入feedback
SELECT
p.id, p.name,
f.score, f.textxnote,
d.id, d.description, d.url
FROM product p
INNER JOIN feedback f ON f.product = p.id
INNER JOIN ProductDetail d ON d.product = p.id
如果产品在表LEFT
和ProductDetail
中没有一行,则可以更改为joins。
https://stackoverflow.com/questions/60229752
复制相似问题