我正在尝试列出包含chorusEffectPedal
和delayEffectPedal
的所有吉他装备。
我有一个guitarRig
数据库。在此数据库中,parts
(即amplifier
,cabinet
,microphone
,guitarType
,guitarStringType
,patchCord
,{{ 1}}等)包括吉他装备。吉他装备可以有许多零件,零件可以属于许多吉他装备。
以下是我的表格:
effectsPedal
到目前为止,我所拥有的是:
Table GuitarRig:
name
numberofParts
Table Part:
name
guitarRig references GuitarRig(name)
product references Product(name)
Table Product:
name
part references Part(name)
barcodeNumber
我意识到INTERSECT不再是关键字语句(即没有 SELECT *
FROM(
SELECT name
FROM Part
WHERE name = 'chorusEffectPedal') INTERSECT
(SELECT recipeName
FROM
WHERE name = 'delayEffectPedal');
函数存在),但这是我想要使用的算法。
我不知道我是不是站起来了,但对我来说这似乎是一个好的开始。
我还应该注意,虽然我发现在INTERSECT
之前我已经发现了其他问题,但我觉得它们并不适用于这种情况。
答案 0 :(得分:0)
是Part.guitarRig与GuitarRig.name相同吗?
然后很简单:
select cep.guitarRig as guitarRig from
(select guitarRig from Part where name='chorusEffectPedal') cep join
(select guitarRig from Part where name='delayEffectPedal') dep
on cep.guitarRig=dep.guitarRig;
P.S。关于REFERENCES作为列规范的一部分,MySQL似乎没有使用它们:
MySQL无法识别或支持“内联参考规范” (在SQL标准中定义),其中引用被定义为 列规范的一部分。 MySQL接受REFERENCES子句 仅当指定为单独的FOREIGN KEY规范的一部分时。