множественная ссылка на первичный ключ в таблице в MySQL - PullRequest
1 голос
/ 08 февраля 2011

Я пытаюсь получить значение, ссылаясь на первичный ключ в нескольких таблицах, но не могу получить результат. Вот таблица

Таблица плотности

 **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 Ответ

1 голос
/ 08 февраля 2011

Вам необходимо присоединиться к таблицам независимо для каждого атрибута: плотность, цвет, длина и ширина.Кроме того, не используйте неявный стиль соединения.Я думаю, что это привело к вашей путанице при создании этого запроса.

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
...