Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
viktor zelenin
Member

Откуда:
Сообщений: 185
не получается получить текст из таблицы, если на неё ссылаются одновременно две другие.
т.е. возвращается только чтото одно, либо текст для первой таблицы, либо для второй.
таблицы такие:
@cities (id_city int, id_text int)
@streets(id_street int, id_city int, id_text int)
@texts(id_text int, textvalue varchar(50))

название города и название улицы, лежат в одной таблице texts,
Но я могу получит только или название города или название улицы.
А как получить название и города и улиц?
18 окт 09, 19:16    [7802229]     Ответить | Цитировать Сообщить модератору
 Re: Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
и в чём проблема-то? дважды джоинить одну таблицу
18 окт 09, 19:26    [7802245]     Ответить | Цитировать Сообщить модератору
 Re: Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
что-то типа того:
select t3.textvalue, t4.textvalue from
@cities t1 inner join @streets t2
on t1.id_city=t2.id_city
inner join @texts t3
on t1.id_text=t3.id_text 
inner join @texts t4
on t2.id_text=t4.id_text
18 окт 09, 19:29    [7802249]     Ответить | Цитировать Сообщить модератору
 Re: Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
deto4ka
Member

Откуда: Пушкин
Сообщений: 215
Попробуй так
select tc.textvalue as 'city', ts.textvalue as'street' from @cities c
join @texts tc on c.id_text=tc.id_text
join @streets s on s.id_city=c.id_city
join @texts ts on s.id_text=ts.id_text
18 окт 09, 19:33    [7802258]     Ответить | Цитировать Сообщить модератору
 Re: Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
deto4ka
Member

Откуда: Пушкин
Сообщений: 215
Извините за повтор. Пока рисовала сообщение, уже ответили.
18 окт 09, 19:34    [7802261]     Ответить | Цитировать Сообщить модератору
 Re: Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
viktor zelenin
Member

Откуда:
Сообщений: 185
Алексей, покажите пожалуйста примерчик.
Что-то не выходит, вот два разных запроса, а как их объеденить?
SELECT TECDOC_TOF_MANUFACTURERS.MFA_BRAND, TEMP_TEXT.TEX_TEXT
FROM (TECDOC_TOF_TYPES INNER JOIN (TECDOC_TOF_MODELS INNER JOIN TECDOC_TOF_MANUFACTURERS ON TECDOC_TOF_MODELS.MOD_MFA_ID = TECDOC_TOF_MANUFACTURERS.MFA_ID) ON TECDOC_TOF_TYPES.TYP_MOD_ID = TECDOC_TOF_MODELS.MOD_ID) INNER JOIN (TEMP INNER JOIN TEMP_TEXT ON TEMP.CDS_TEX_ID = TEMP_TEXT.TEX_ID) ON TECDOC_TOF_MODELS.MOD_CDS_ID = TEMP.CDS_ID
WHERE (((TECDOC_TOF_TYPES.TYP_MOD_ID)=278) AND ((TECDOC_TOF_MANUFACTURERS.MFA_ID)=502));


SELECT TECDOC_TOF_MANUFACTURERS.MFA_BRAND, TEMP_TEXT.TEX_TEXT
FROM (TECDOC_TOF_TYPES INNER JOIN (TECDOC_TOF_MODELS INNER JOIN TECDOC_TOF_MANUFACTURERS ON TECDOC_TOF_MODELS.MOD_MFA_ID = TECDOC_TOF_MANUFACTURERS.MFA_ID) ON TECDOC_TOF_TYPES.TYP_MOD_ID = TECDOC_TOF_MODELS.MOD_ID) INNER JOIN (TEMP INNER JOIN TEMP_TEXT ON TEMP.CDS_TEX_ID = TEMP_TEXT.TEX_ID) ON TECDOC_TOF_TYPES.TYP_CDS_ID = TEMP.CDS_ID
WHERE (((TECDOC_TOF_TYPES.TYP_MOD_ID)=278) AND ((TECDOC_TOF_MANUFACTURERS.MFA_ID)=502));
18 окт 09, 20:06    [7802333]     Ответить | Цитировать Сообщить модератору
 Re: Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
iljy
Member

Откуда:
Сообщений: 8711
viktor zelenin,

отвыкайте скобки вокруг join ставить без необходимости и привыкайте псевдонимы для таблиц использовать - все сразу станет понятно.
SELECT TECDOC_TOF_MANUFACTURERS.MFA_BRAND, TEMP_TEXT.TEX_TEXT
FROM TECDOC_TOF_TYPES ttt
 JOIN TECDOC_TOF_MODELS ttm ON ttt.TYP_MOD_ID = ttm.MOD_ID
 JOIN TECDOC_TOF_MANUFACTURERS tfm ON ttm.MOD_MFA_ID = tfm.MFA_ID

 JOIN TEMP t1 ON ttt.TYP_CDS_ID = t1.CDS_ID
 JOIN TEMP_TEXT tt1 ON t1.CDS_TEX_ID = tt1.TEX_ID

 JOIN TEMP t2 ON ttm.MOD_CDS_ID = t2.CDS_ID
 JOIN TEMP_TEXT tt2 ON t2.CDS_TEX_ID = tt2.TEX_ID
WHERE ttt.TYP_MOD_ID=278 AND tfm.MFA_ID=502;
18 окт 09, 20:46    [7802400]     Ответить | Цитировать Сообщить модератору
 Re: Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
iljy
Member

Откуда:
Сообщений: 8711
viktor zelenin,

пардон, список селект еще поменять надо
SELECT tfm.MFA_BRAND, tt1.TEX_TEXT, tt2.TEX_TEXT
18 окт 09, 20:48    [7802402]     Ответить | Цитировать Сообщить модератору
 Re: Помогите отобразить разные значение из одной таблицы, по связям из двух других.  [new]
viktor zelenin
Member

Откуда:
Сообщений: 185
спасибо друзья,
акцес паразит со своими этими скобками достал.
сейчас заливаю на удалённый сервак таблицы,
буду на 2008 экспериментировать.

за благое дело стараюсь.
делаю подбор шин по марке авто, а это нелёгкая задачка.
но уже всё сделал, и вот осталось залить таблицы марок и моделей.
18 окт 09, 21:20    [7802475]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить