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

Откуда:
Сообщений: 284
Народ! помогите разобраться, почему говорит:

Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 't1_id'.


SELECT *
FROM Table1, Table2
LEFT JOIN Table3 ON t3_t1_id = t1_id AND t3_t2_id = t2_id
WHERE t2_id = 1

~~~~~~
Table1
t1_id
...
Table2
t2_id
...
Table3
t3_id
t3_t1_id
t3_t2_id
...
9 ноя 05, 10:51    [2050374]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

SELECT *
FROM Table1, Table2
LEFT JOIN Table3 ON Table3.t3_t1_id = Table1.t1_id AND Table3.t3_t2_id = 
Table2.t2_id
WHERE Table2.t2_id = 1
писать названия полей не указывая названия
таблиц некошерно...


Posted via ActualForum NNTP Server 1.3

9 ноя 05, 10:57    [2050394]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Патамушта запрос неправильно написан

SELECT
  *
FROM
  Table3 T3
  RIGHT OUTER JOIN Table1 T1 ON
  T3.t3_t1_id = T1.t1_id 
  RIGHT OUTER JOIN Table2 T2 ON
  T3.t3_t2_id = T2.t2_id 
WHERE
  T2.t2_id = 1 
9 ноя 05, 11:00    [2050405]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
De
Member

Откуда:
Сообщений: 284
Народ, возможно я неправильно объяснил, предложенное вами решение не дает требуемого результата, попытаюсь объяснить на словах
есть три таблицы:
~~~~~~
Table1
t1_id
...
Table2
t2_id
...
Table3
t3_id
t3_t1_id
t3_t2_id
...
~~~~~
на входе я знаю t2_id,
мне нужно выбрать все записи из Table1, в полученные записи подставить значения из известной мне записи в Table2 и в случае если есть связь между Table1 и Table2 в Table3 получить значения из этой таблицы
9 ноя 05, 11:44    [2050621]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Рекомендации по оформлению сообщений в форуме п.6
9 ноя 05, 11:46    [2050633]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
Glory
Member

Откуда:
Сообщений: 104760
мне нужно выбрать все записи из Table1, в полученные записи подставить значения из известной мне записи в Table2
В запросе не видно никакого join-а этих таблиц

есть связь между Table1 и Table2 в Table3
Расшифруйте. Как это и "между" и "в" ?
9 ноя 05, 11:47    [2050644]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
De
Member

Откуда:
Сообщений: 284
>Glory
между Table1 и Table2 по средствам Table3 реализована связь многие-ко-многим

в Table2 содержится редактируемая в данный момент запись
Table1 содержит набор констант, которые по умолчанию есть у всех записей из Table2
Table3 может содержать некие дополнительные характеристики

требуется выбрать
из Table2 (Название)
из Table1 все записи
из Table3 поднять возможно имеющиеся там дополнительные параметры
9 ноя 05, 11:57    [2050691]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
Glory
Member

Откуда:
Сообщений: 104760
из Table1 все записи
select * from table1 a

из Table1 все записи
из Table3 поднять возможно имеющиеся там дополнительные параметры

select *
from table1 a
left outer join table3 b on a.t1_id = b.t3_t1_id

из Table1 все записи
из Table3 поднять возможно имеющиеся там дополнительные параметры
из Table2 (Название)

select *
from(
select *
from table1 a
left outer join table3 b on a.t1_id = b.t3_t1_id) as c
left outer join table2 d on d.t2_id = c.t3_t2_id
9 ноя 05, 12:04    [2050733]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
De
Member

Откуда:
Сообщений: 284
>Glory
спасибо за ответ, очень близко но всеже не в 10,
из запроса:
select *
from(
select * 
from table1 a
left outer join table3 b on a.t1_id = b.t3_t1_id) as c
left outer join table2 d on d.t2_id = c.t3_t2_id

получается что если нет связи в table3 то не удастся получить значение из table2, а требуется обязательно получить полный список констант из table1 и 1 название из table2 (известен Id), а из table3 поднять записи только если есть связки
9 ноя 05, 12:19    [2050833]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
Glory
Member

Откуда:
Сообщений: 104760
De
получается что если нет связи в table3 то не удастся получить значение из table2, а требуется обязательно получить полный список констант из table1 и 1 название из table2 (известен Id), а из table3 поднять записи только если есть связки

Не понял. Ваши слова "между Table1 и Table2 по средствам Table3 реализована связь многие-ко-многим" ?
Так есть связь между Table1 и Table2 или ее нет ? Если нет, то какое "1 название из table2 " нужно выводить для каждой записи из table1 ?
9 ноя 05, 12:22    [2050855]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
De
Member

Откуда:
Сообщений: 284
Glory
Не понял. Ваши слова "между Table1 и Table2 по средствам Table3 реализована связь многие-ко-многим" ?

связь не строгая, там могут храниться дополнительные характеристики, а могут и не храниться, но выбирать нужно все записи из Table1

Glory
Так есть связь между Table1 и Table2 или ее нет ? Если нет, то какое "1 название из table2 " нужно выводить для каждой записи из table1 ?

в предыдущем сообщение указано что известен t2_id вот запись с этим id и нужно поднимать
9 ноя 05, 12:33    [2050922]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

2 De
может, Вы все-таки приведете пример исходных данных и соответствующего
желаемого результата?


Posted via ActualForum NNTP Server 1.3

9 ноя 05, 12:39    [2050955]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
Glory
Member

Откуда:
Сообщений: 104760
De
Glory
Не понял. Ваши слова "между Table1 и Table2 по средствам Table3 реализована связь многие-ко-многим" ?

связь не строгая, там могут храниться дополнительные характеристики, а могут и не храниться, но выбирать нужно все записи из Table1

Glory
Так есть связь между Table1 и Table2 или ее нет ? Если нет, то какое "1 название из table2 " нужно выводить для каждой записи из table1 ?

в предыдущем сообщение указано что известен t2_id вот запись с этим id и нужно поднимать

Я уже ничего не понимаю что у вас с чем связано или не связано.
9 ноя 05, 12:41    [2050964]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
De
Member

Откуда:
Сообщений: 284
Table1
t1_id      name
---------------------- 
1           Свободно
2           Занято


Table2
t2_id      name
---------------------- 
1           Место1
2           Место2


Table3
t3_id      t3_t1_id      t3_t2_id      koeff
------------------------------------------
1           1               1             12
2           1               2             21
2           2               2             43

обрабатываем Место1 (знаем его id):

Место1    Свободно      12
Место1    Занято        

если редактируемой записью было бы Место2 то выборка была бы:

Место2    Свободно      21
Место2    Занято        43
9 ноя 05, 12:56    [2051031]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
Glory
Member

Откуда:
Сообщений: 104760
select * from
(select *
from table1 cross join table2) a
left outer join table 3 c on c.t3_t1_id = a.t1_id and c.t3_t2_id = a.t2_id
9 ноя 05, 13:05    [2051078]     Ответить | Цитировать Сообщить модератору
 Re: Ощущение что ошибка в логике, но где?  [new]
De
Member

Откуда:
Сообщений: 284
>Glory
большое спасибо
9 ноя 05, 13:24    [2051192]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить