|
|
|
| Помогите пожалуйста советом или предложением. У меня есть задача в которой нужно чтобы в базе хранилось самостоятельное значение или индекс значения в справочнике. Но я никак не могу придумать как это можно определить путем запроса.
Сейчас у меня это примерно так выглядит:
Таблица значений:
1 | Текстовое значение
2 | 1
3 | 2
Таблица справочных значений:
1 | Волга
2 | Ваз
Как мне получить полный список значений:
1 | Текстовое значение
2 | Волга
3 | Ваз
И нужно делать два запроса, определяя сначала значение, а потом проверяя его на наличии в справочнике? | |
|
|
|
|
|
|
|
для: Progmed
(17.06.2008 в 13:38)
| | таблица значений и таблица справочных значений связаны? если да то через какое поле? | |
|
|
|
|
|
|
|
для: ronin80
(17.06.2008 в 13:45)
| | Значение в таблице значений - ID в справочнике значений | |
|
|
|
|
|
|
|
для: Progmed
(17.06.2008 в 13:49)
| | 1 | Текстовое значение
2 | 1
3 | 2
т.е. получается второй столбец (где имеется 'Текстовое значение') является внешним ключом для справочника значений? | |
|
|
|
|
|
|
|
для: ronin80
(17.06.2008 в 14:06)
| | На данный момент да. То есть по логике здесь получается, что если значение есть в справочнике, то берем справочное, если нет, то берем указанное. Но реализовать такое не получается в запросе. | |
|
|
|
|
|
|
|
для: Progmed
(17.06.2008 в 14:30)
| | если допустим такую структуру
таблица значений (table1)
ID - пк
NAME - наименование
таблица справочных значений (table2)
ID_ID - внешний ключ
NAME - наименование
то получим такой запрос:
Select NAME from table1
where not exists (select * from table2 where table2.ID_ID=table1.ID)
UNION
Select NAME from table1
where exists (select * from table2 where table2.ID_ID=table1.ID) | |
|
|
|
|
|
|
|
для: ronin80
(17.06.2008 в 14:42)
| | ronin80, спасибо огромное!!! Вроде это именно то, что доктор прописал. Попробую и отпишусь :-) | |
|
|
|
|
|
|
|
для: ronin80
(17.06.2008 в 14:42)
| | Ан нет, такой вариант не подходит, как оказывается. Из table2 нельзя получить значения похоже никак? | |
|
|
|
|
|
|
|
для: Progmed
(18.06.2008 в 12:50)
| | извиняюсь ступил немного
Select ID, NAME from table1
where not exists (select * from table2 where table2.ID_ID=table1.ID)
UNION
Select ID, (Select table2.NAME From table2 Where table2.ID_ID=table1.ID) as NAME from table1
where exists (select * from table2 where table2.ID_ID=table1.ID) | |
|
|
|