2010-06-07 6 views
0

У меня есть таблица, которая выглядит так. И я хочу, чтобы получить данные, такие какМожно ли запросить эти таблицы?

1.2, «Меня зовут», 1,6, «Граф», 12345, «Rock Hard Awesome»

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

То, что должно быть выполнено, - таблица значений написана много раз (для тонны значений), но таблица описания имеет уникальные значения, которые являются статическими, и помещая их в отдельную таблицу, которую они не получают написанные снова и снова.

Values Table 
Column names = DataID1|DataID1Value|DataID2|DataID2Value|DataID3|DataID3Value 
Row values = 1  1.2   2  1.6   3  12345 

Description Table 
Column names = DescriptionID1|Description 
Row value = 1    "My name is" 
Row value = 2    "Earl" 
Row value = 3    "Rock Hard Awesome" 

ответ

3

Как об этом:

SELECT DISTINCT v.DataID1Value, d1.Description, 
       v.DataID2Value, d2.Description, 
       v.DataID3Value, d3.Description 
    FROM Values v 
    INNER JOIN Description d1 on d1.DescriptionID = v.DataID1 
    INNER JOIN Description d2 on d2.DescriptionID = v.DataID2 
    INNER JOIN Description d3 on d3.DescriptionID = v.DataID3 
+0

Я думаю, вы пропустили какую часть того, что я написал, и, возможно, помогли мне доказать, почему я думаю, что это невозможно. Обратите внимание, что у вас есть Desc2 и Desc3. Но это не существует в моей нынешней схеме. Пожалуйста, исправьте/простите меня, если я ошибаюсь. – Maestro1024

+0

Замените Desc1, Desc2, Desc3 на Desc и запустите запрос – Bharat

+0

Appart из отсутствующего табличного имени Decsription, этот select дает вам выход с предоставленными вами вводом. Если это не то, что вам нужно, вы должны обновить свой вопрос. –

0

Лично я бы не хранить данные таким образом. То, что у вас есть, - это, по существу, таблица поиска, которая связана со многими столбцами, созданными только одним. Поэтому вам придется присоединиться к нему для каждого столбца, для которого вы хотите увидеть описание. Это возможно, но приведет к ужасным проблемам производительности, поскольку эта таблица станет кошмаром для блокировки.

Если у вас есть статические значения, которые не меняются, просмотрите их (используйте их для выпадания, если хотите, на своих формах) и сохраните их в таблице значений вставки. Затем вы можете запросить только одну таблицу.

Затем зайдите и прочитайте о таблицах EAV, и какова проблема, и почему они плохой техникой в ​​дизайне базы данных.

И вот как вы запрашиваете текущую таблицу. Обратите внимание, что вы присоединяетесь к нему несколько раз, чтобы получить необходимую информацию для каждого значения. D1, d2, d3 - это разные псевдонимы, которые вам нужны, когда у вас несколько объединений в одной таблице.

SELECT DISTINCT v.DataID1Value, d1.Description, 
       v.DataID2Value, d2.Description, 
       v.DataID3Value, d3.Description 
    FROM Values v 
    INNER JOIN Description d1 on d1.DescriptionID = v.DataID1 
    INNER JOIN Description d2 on d2.DescriptionID = v.DataID2 
    INNER JOIN Description d3 on d3.DescriptionID = v.DataID3 
+1

Это тот же запрос, который я написал :) –

+0

NOt совершенно, твой был неправ, потому что он дважды сглаживал таблицы. – HLGEM

Смежные вопросы