为了账号安全,请及时绑定邮箱和手机立即绑定

从一对一关系中的联接表中选择数据

从一对一关系中的联接表中选择数据

拉丁的传说 2022-01-12 14:20:30
我有一个类梳妆台,它扩展了抽象类家具。这是类家具。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 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

更新必须在两个语句中完成。您可能希望将这两个语句包装在一个事务中,以确保它们都成功或失败。


查看完整回答
反对 回复 2022-01-12
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

我强烈建议使用INNER JOINover a cartesian product 或 cross join 与WHERE子句中的 join 。

例如:

String query = "SELECT * FROM furniture f INNER JOIN dresser d ON f.index = d.index"


查看完整回答
反对 回复 2022-01-12
?
慕工程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)。


查看完整回答
反对 回复 2022-01-12
  • 3 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号