【发布时间】:2018-11-10 23:18:24
【问题描述】:
我有一个类 Dresser 扩展了抽象类 Furniture。
这是家具类。
public abstract class Furniture {
private String furnishing;
private String board;
private String wood;
private double mass;
private int price;
private int shippingPrice;
}
这是Dresser类。
public final class Dresser extends Furniture {
private int width;
private int length;
private int height;
private int drawers;
}
继承在表格中表示如下:
CREATE TABLE furnitures (
index INTEGER NOT NULL AUTO_INCREMENT,
furnishing VARCHAR(255) NOT NULL,
board VARCHAR(255) NOT NULL,
wood VARCHAR(255) NOT NULL,
mass FLOAT(5,2) NOT NULL,
price INTEGER NOT NULL,
shipping_price INTEGER NOT NULL,
PRIMARY KEY (index)
)
CREATE TABLE IF NOT EXISTS dressers (
index INTEGER NOT NULL,
width INTEGER NOT NULL,
length INTEGER NOT NULL,
height INTEGER NOT NULL,
drawers INTEGER NOT NULL,
PRIMARY KEY (index),
FOREIGN KEY (index) REFERENCES furniture (index)
)
我需要构建一个查询,允许我选择一条记录或从表中选择所有记录,但到目前为止我已经想出了这个,但我不知道这是否一定是最好的方法。
String query =
"SELECT furniture.board, furniture.wood, furniture.mass, " +
"furniture.price, furniture.shipping_price, " +
"dresser.width, dresser.length, dresser.height, dresser.drawers " +
"FROM furniture, dresser " +
"WHERE " +
"furniture.index = dresser.index";
这将是我选择所有记录的查询(可以安全地忽略装饰字段)。
如何改进?另外,在给定索引的情况下,我如何查询以选择某条记录或如何更新记录?
PD:我正在使用 MySQL。
【问题讨论】:
-
请不要使用旧的基于逗号的隐式连接并使用现代Explicit
Joinbased syntax -
另外,请将一些示例数据(在两个表中)添加到问题中,以及相应的预期输出。编辑问题后在此处标记我们。
标签: java mysql sql jdbc one-to-many