mysql - 如何检索链接到某个主键的外键
问题描述
我有一个简单的 MySQL 数据库,其中包含一个由 2 个 varchar 列组成的 PK 表。
CREATE TABLE prodotti(
type_prod varchar(10) not null,
model_prod varchar(10) not null,
brand_prod varchar(20) not null,
name_prod varchar(30) not null,
year_prod int not null,
description_prod varchar(500) not null,
price_prod float not null,
qnt_prod int not null,
PRIMARY KEY(type_prod,model_prod) );
还有其他带有 FK 的表与此 PK 相关联(在这种情况下,我只向您展示这些表中的 2 个)
CREATE TABLE cpu_component(
id_cpu varchar(10) not null,
series_cpu varchar(20) not null,
num_cores int not null,
frequency_ghz int not null,
socket_cpu int not null,
label_cpu varchar(10),
model_cpu varchar(10),
PRIMARY KEY (id_cpu),
FOREIGN KEY(label_cpu,model_cpu) REFERENCES prodotti(type_prod,model_prod)
ON UPDATE CASCADE
ON DELETE CASCADE );
CREATE TABLE motherboard_component(
id_motherboard varchar(10) not null,
series_motherboard varchar(20) not null,
chipset_motherboard varchar(15) not null,
socket_motherboard int not null,
type_ram_motherboard varchar(15) not null,
ram_frequency_index int not null,
slot_ram int not null,
hdmi_ports_gpu int not null,
usb_ports_motherboard int not null,
bios_motherboard varchar(10) not null,
label_motherboard varchar(10),
model_motherboard varchar(10),
PRIMARY KEY (id_motherboard),
FOREIGN KEY(label_motherboard,model_motherboard) REFERENCES prodotti(type_prod,model_prod)
ON UPDATE CASCADE
ON DELETE CASCADE );
我想检索链接到通过用户输入获得的特定 PK 的所有 FK
PS这是我在这里的第一个问题,请宽容大声笑
解决方案
您可以使用 SQL 的INNER JOIN
语句来实现这一点,其中加入表prodotti
并将cpu_component
为您提供其中的所有行cpu_component
也在prodotti
.
SELECT p.type_prod, p.model_prod, cpu.num_cores
FROM prodotti p
INNER JOIN cpu_component cpu ON(cpu.label_cpu = p.type_prod AND cpu.model_cpu = model_prod)
至于将表prodotti
与表连接起来motherboard_component
:
SELECT p.type_prod, p.model_prod, mc.chipset_motherboard
FROM prodotti p
INNER JOIN motherboard_component mc ON(mc.label_motherboard = p.type_prod AND mc.model_motherboard = p.model_prod)
推荐阅读
- haskell - 从 IO Monad 设置配置参数 - 设计模式
- c - 将字符数组转换为结构类型
- node.js - 使用 fetch 抓取网页 - 承诺无法解决
- reactjs - 无法在 React 上使用 Multer 上传多个文件
- vue.js - 我如何拥有一个 Chart.vue 组件而不是不同的图表组件,然后通过更改 API 的 ID 来显示图表
- html - Flexbox:不能在容器项目上使用空格
- android - Windows 10 上的 Android Studio 4.1.1“无法访问 android.app.Activity”
- java - 在 Android API 22 Java 8 中使用带有 log4j 2.7 的 maven jar 获取 java.lang.NullPointerException:尝试获取空数组的长度
- php - 我有一个非常不稳定的多站点 wordpress
- android-studio - 我在flutter中创建新应用程序,在vs代码终端中创建AppName它工作但是当我尝试flutter run时它显示这个错误消息