首页 > 解决方案 > 如何检索链接到某个主键的外键

问题描述

我有一个简单的 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这是我在这里的第一个问题,请宽容大声笑

标签: mysql

解决方案


您可以使用 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)

推荐阅读