我有一个类梳妆台,它扩展了抽象类家具。这是类家具。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。
3 回答

慕娘9325324
TA贡献1783条经验 获得超4个赞
我强烈建议使用INNER JOIN
over a cartesian product 或 cross join 与WHERE
子句中的 join 。
例如:
String query = "SELECT * FROM furniture f INNER JOIN dresser d ON f.index = d.index"

慕工程0101907
TA贡献1887条经验 获得超5个赞
要仅选择特定的梳妆台,请使用
String query =
"SELECT f.board, f.wood, f.mass, f.price, f.shipping_price,
d.width, d.length, d.height, d.drawers
FROM furniture f
JOIN dresser d ON f.index = d.index
WHERE f.index = @index"
这@index是您想要的梳妆台的索引(请参阅https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-parameters.html)。
添加回答
举报
0/150
提交
取消