MySQL:使用交集来计算众多对象的实例数

时间:2014-03-27 23:51:08

标签: mysql

我正在尝试列出包含chorusEffectPedaldelayEffectPedal的所有吉他装备。

我有一个guitarRig数据库。在此数据库中,parts(即amplifiercabinetmicrophoneguitarTypeguitarStringTypepatchCord,{{ 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之前我已经发现了其他问题,但我觉得它们并不适用于这种情况。

1 个答案:

答案 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规范的一部分时。

来源:http://dev.mysql.com/doc/refman/5.6/en/create-table.html