Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查询3表上的多对多关系_Mysql_Sql_Database - Fatal编程技术网

Mysql 查询3表上的多对多关系

Mysql 查询3表上的多对多关系,mysql,sql,database,Mysql,Sql,Database,我有三张桌子 Partcar BarbellWheels Assembly 现在,我不知道如何管理此表以获得连接,因为零件车和装配是多对多关系。但是,BarbellWheels将与Assembly中的Partcar合并。如何使这3个表具有多对多关系,Partcar和BarbellWheels与Assembly。 如果可以的话,三表合一,什么样的查询来连接它们 到目前为止,我想的是,BarbellWheels先加入Partcar1st,然后加入Assembly 有什么建议吗 编辑: Partcar

我有三张桌子

  • Partcar
  • BarbellWheels
  • Assembly
  • 现在,我不知道如何管理此表以获得连接,因为
    零件车
    装配
    是多对多关系。但是,
    BarbellWheels
    将与
    Assembly
    中的
    Partcar
    合并。如何使这3个表具有多对多关系,
    Partcar
    BarbellWheels
    Assembly
    。 如果可以的话,三表合一,什么样的查询来连接它们

    到目前为止,我想的是,
    BarbellWheels
    先加入
    Partcar
    1st,然后加入
    Assembly

    有什么建议吗

    编辑:

    Partcar上有5个数据,在装配中必须合并为1,杠铃轮将在装配中合并,最多有2个数据

    编辑: 我只是觉得我没有提到这段关系。这是密码

    CREATE TABLE `Partcar` (
         `partcarID` Char(7) NOT NULL,
         `partcar_price` decimal(19,4) DEFAULT NULL,
         `partcar_name` varchar(100) DEFAULT NULL,
          PRIMARY KEY (`PartcarID`)
          );
    
    
    ALTER TABLE `assembly` (
          `assemblyID` char(8) NOT NULL,
          `assembly_price` decimal(19,4) DEFAULT NULL,
          `partcarIDFK` int(10) NOT NULL,
          `barbellIDFK` int(10) NOT NULL,
          PRIMARY KEY (`assemblyID`),
          UNIQUE KEY `partcar` (`partcarIDFK`),
          UNIQUE KEY `barbell` (`barbellIDFK`),
          CONSTRAINT `partcarIDFK` FOREIGN KEY (`partcarIDFK`) REFERENCES partcar(`partcarID`),
          CONSTRAINT barbellIDFK FOREIGN KEY (`barbellIDFK`) REFERENCES barbell(`barbellID`)
          );
    
    ALTER TABLE `barbell` (
          `barbellID` char(10) NOT NULL,
          `name_barbell` varchar(100) DEFAULT NULL,
          `carIDFK` int(10) NOT NULL,
          PRIMARY KEY (`barbellID`),
          UNIQUE KEY `car` (`carID`),
    

    同样的情况下,在下面的网址,找到解决办法也


    考虑以下几点:

    食谱

    recipe_id recipe 
            1 cheese on toast
            2 macaroni and cheese
    
    配料

    ingredient_id ingredient
              101 cheese
              102 toast
              103 macaroni 
    
    配方与配料

    recipe_id ingredient_id
            1 101
            1 102
            2 103
            2 104
    

    有什么建议吗?是的-将表格定义、样本数据和预期结果作为文本添加到您的问题(或sqlfddle)@P.Salmon我正在尝试,但是,您能给我举个例子吗?我不能提交图片,除非给你一个链接图片,我对使用sqlfddle感到困惑,我还是sql的初学者。我缺少什么吗?您的图表没有描述外键关系。。有吗?如果是,你能编辑你的问题吗?如果不是,你应该考虑对你的数据进行键,以便它能很好地加入。@ TalyIm已经加入了它,但是在数据库中看起来像是输入了<代码> ID <代码>。然后,我只是用
    选择
    WHERE
    ID
    ?但是,我得到了3张表。不是2.所以现在你知道该怎么做了!不,我的意思是,我仍然不知道如何使用细节表,我在谷歌上搜索它,为什么使用左连接而不是内部或外部?堆栈溢出对他们所谓的“仅链接的答案”表示不满。我不确定,但我怀疑这就是你被否决的原因。有关如何改进答案的更多信息,请参阅中的讨论