You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关联Car、Partcar、Barbell表(基于Assembly多对多关联)

嘿,我先帮你把数据库表结构里的语法错误修正了(毕竟原语句里有不少字段名、类型不匹配和语法问题,没法正常建立关联),然后梳理清楚关联逻辑,最后生成你要的输出格式~


修正后的数据库表结构

确保所有表能正常建立关联的正确SQL语句:

-- 创建车辆主表
CREATE TABLE `car` (
  `carID` CHAR(7) NOT NULL,
  `name_car` VARCHAR(100) DEFAULT NULL,
  `car_price` DECIMAL(19,4) DEFAULT NULL,
  PRIMARY KEY (`carID`)
);

-- 创建汽车部件表(关联车辆表)
CREATE TABLE `Partcar` (
  `partcarID` CHAR(7) NOT NULL,
  `partcar_price` DECIMAL(19,4) DEFAULT NULL,
  `partcar_name` VARCHAR(100) DEFAULT NULL,
  `carIDFK` INT(10) NOT NULL,
  PRIMARY KEY (`partcarID`),
  UNIQUE KEY `car` (`carIDFK`),
  CONSTRAINT `carIDFK_Partcar` FOREIGN KEY (`carIDFK`) REFERENCES `car`(`carID`)
);

-- 创建杠铃表(关联车辆表,这里假设是车辆关联的杠铃部件?)
CREATE TABLE `barbell` (
  `barbellID` CHAR(10) NOT NULL,
  `name_barbell` VARCHAR(100) DEFAULT NULL,
  `carIDFK` INT(10) NOT NULL,
  PRIMARY KEY (`barbellID`),
  UNIQUE KEY `car` (`carIDFK`),
  CONSTRAINT `carIDFK_Barbell` FOREIGN KEY (`carIDFK`) REFERENCES `car`(`carID`)
);

-- 创建中间表,实现Partcar和Barbell的多对多关联
CREATE TABLE `assembly` (
  `assemblyID` CHAR(8) NOT NULL,
  `assembly_price` DECIMAL(19,4) DEFAULT NULL,
  `partcarIDFK` CHAR(7) NOT NULL, -- 类型和Partcar的主键匹配
  `barbellIDFK` CHAR(10) NOT NULL, -- 类型和Barbell的主键匹配
  PRIMARY KEY (`assemblyID`),
  CONSTRAINT `partcarIDFK_Assembly` FOREIGN KEY (`partcarIDFK`) REFERENCES `Partcar`(`partcarID`),
  CONSTRAINT `barbellIDFK_Assembly` FOREIGN KEY (`barbellIDFK`) REFERENCES `barbell`(`barbellID`)
);

关联逻辑说明

你想要的Partcar与Barbell多对多关系已经通过assembly中间表实现:

  • 一个汽车部件(Partcar)可以对应多个杠铃(Barbell),通过assembly表中多条包含同一个partcarIDFK的记录关联
  • 一个杠铃(Barbell)也可以对应多个汽车部件(Partcar),同理通过assembly表中多条包含同一个barbellIDFK的记录关联
  • 同时Partcar和Barbell各自通过carIDFK字段绑定到car表,实现和车辆的关联

需求输出格式

1. 车辆与装配体关联输出

先通过SQL查询获取车辆ID和对应装配体ID的组合:

SELECT CONCAT(c.carID, ' - ', a.assemblyID) AS `Code Car(CarID) + Assembly`
FROM car c
JOIN Partcar pc ON c.carID = pc.carIDFK
JOIN assembly a ON pc.partcarID = a.partcarIDFK

输出表格(每条内容可作为查看部件的入口):

Code Car(CarID) + Assembly
C1234 - A12345678
C5678 - A87654321

2. 车辆与部件关联输出

通过SQL查询获取车辆和对应部件的详细信息:

SELECT 
  ROW_NUMBER() OVER (ORDER BY c.carID) AS `No.`,
  c.carID AS `IDcar`,
  c.name_car AS `Car Name`,
  pc.partcarID AS `Part ID`,
  pc.partcar_name AS `Part Name`,
  pc.partcar_price AS `Part Price`
FROM car c
JOIN Partcar pc ON c.carID = pc.carIDFK
ORDER BY c.carID

输出表格:

No.IDcarCar NamePart IDPart NamePart Price
1C1234Sedan XP001Engine15000.0000
2C1234Sedan XP002Tire800.0000
3C5678SUV YP003Battery2000.0000

内容的提问来源于stack exchange,提问作者Ainal Yaqin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:52:52