在mysql中的表中多次引用主键

时间:2011-02-08 19:00:00

标签: mysql primary-key

我试图通过引用多个表中的主键来检索值,但无法获得结果。这是表

密度表

 **de_id  density  color**
    1   21  red
    2   22  blue
    3   23  green
    4   24  yellow
    5   25  orange

尺寸表

**si_id   length  breadth**
1        21     41
2        22     42
3        23     43
4        24     44
5        25     45

Order_de表

**or_id  density    color  length breadth**
 1     1          2       3       4
 2     4          3       2       1

我想解决的问题是

  SELECT density.density,density.color,size.length,size.breadth,order_de.or_id from 
    density,size,order_de WHERE order_de.density=density.de_id and 
    order_de.color=density.de_id and order_de.length=size.si_id and 
    order_de.breadth=size.si_id  order by order_de.or_id asc

期望的结果应该是

density   color   length breadth  or_id
     21    blue      23    44       1
     24   green      22    41       2

但查询没有检索到任何内容。 任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您需要为每个属性单独连接表:密度,颜色,长度和宽度。另外,不要使用隐式连接样式。我认为这有助于您在制作此查询时产生混淆。

SELECT d1.density, d2.color, s1.length, s2.breadth, o.or_id 
    FROM Order_de o
        INNER JOIN Density d1
            ON o.density = d1.de_id
        INNER JOIN Density d2
            ON o.color= d2.de_id
        INNER JOIN Size s1
            ON o.length = s1.si_id
        INNER JOIN Size s2
            ON o.breadth = s2.si_id
    ORDER BY o.or_id asc