Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Ошибка при попытке передать в JOIN таблицу  [new]
wweter
Member

Откуда: Севастополь
Сообщений: 34
есть mssql 2000 и код php которым к нему обращаюсь.
изначальная конструкция:

$query = "SELECT TOP 100 j.IDDOCDEF, j.docno ";
$query .= " FROM SC224, _1SJOURN j ";
$query .= " LEFT JOIN DH768 ON j.iddoc=DH768.iddoc and DH768.sp758=SC224.id";
$query .= " WHERE ";
$query .= " SC224.code='0000725' ";

выдает ошибку Warning: mssql_query() [function.mssql-query]: message: The column prefix 'SC224' does not match with a table name or alias name used in the query. (severity 16)

при попытке сделать другим образом:

$query = "SELECT TOP 100 j.IDDOCDEF, j.docno ";
$query .= " FROM SC224, _1SJOURN j , DH768 ";
$query .= " WHERE ";
$query .= " SC224.code='0000725' and j.iddoc=DH768.iddoc and DH768.sp758=SC224.id ";

запрос срабатывает. отделаться where не получится, тк join будет не один.

помогите разобраться пожалуйста
29 сен 09, 15:59    [7720977]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
wweter
$query .= " FROM SC224, _1SJOURN j ";
$query .= " LEFT JOIN DH768 ON j.iddoc=DH768.iddoc and DH768.sp758=SC224.id";
А Вы не перемешывайте разные синтаксисы
Пользуйтесь только join
Запятыми не пользуйтесь
29 сен 09, 16:03    [7721011]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Не надо мешать в одном запросе разные стили соединения таблиц и все получится
29 сен 09, 16:03    [7721012]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
$query = "SELECT TOP 100 j.IDDOCDEF, j.docno ";
$query .= " FROM SC224, _1SJOURN j ";
$query .= " LEFT JOIN DH768 ON j.iddoc=DH768.iddoc and DH768.sp758=SC224.id";
$query .= " WHERE ";
$query .= " SC224.code='0000725' "; 

попробуйте вот так

$query = "SELECT TOP 100 j.IDDOCDEF, j.docno ";
$query .= " FROM SC224 x , _1SJOURN j ";
$query .= " LEFT JOIN DH768 y ON j.iddoc=y.iddoc and y.sp758=x.id";
$query .= " WHERE ";
$query .= " x.code='0000725' "; 
-------------------------------------
Jedem Das Seine
29 сен 09, 16:04    [7721017]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
wweter
Member

Откуда: Севастополь
Сообщений: 34
пробую так:

$query  = "SELECT TOP 100 j.IDDOCDEF, j.docno ";
$query .= " FROM SC224 x, _1SJOURN j ";
$query .= " JOIN DH768 y ON j.iddoc=y.iddoc and y.sp758=x.id";
$query .= " WHERE ";
$query .= " x.code='0000725'  ";  

Warning: mssql_query() [function.mssql-query]: message: The column prefix 'x' does not match with a table name or alias name used in the query. (severity 16)
29 сен 09, 16:08    [7721039]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
daw
Member

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

сказали же - все через join-ы перепишите:
SELECT TOP 100 j.IDDOCDEF, j.docno
FROM SC224
   inner join _1SJOURN j on
     DH768.sp758=SC224.id
   LEFT JOIN DH768 ON
     j.iddoc=DH768.iddoc
WHERE
SC224.code='0000725'

Posted via ActualForum NNTP Server 1.4

29 сен 09, 16:09    [7721047]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
SC224 x, _1SJOURN j

нормально соединение опишите для этой таблицы
29 сен 09, 16:10    [7721051]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
опоздал с постом
daw уже всё разжевал.
29 сен 09, 16:11    [7721062]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
wweter, вам уже ответили :)
29 сен 09, 16:11    [7721065]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
daw
Member

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

> SELECT TOP *100* j.IDDOCDEF, j.docno
> FROM SC224
> inner join _1SJOURN jon
> DH768.sp758=SC224.id
> LEFT JOIN DH768ON
> j.iddoc=DH768.iddoc
> WHERE
> SC224.code='0000725'

так, стоп. не то. а как у вас SC224 и _1SJOURN вообще связаны?
или там, действительно, декартово произведение должно быть?

Posted via ActualForum NNTP Server 1.4

29 сен 09, 16:14    [7721085]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
wweter
Member

Откуда: Севастополь
Сообщений: 34
daw

сказали же - все через join-ы перепишите:
SELECT TOP 100 j.IDDOCDEF, j.docno
FROM SC224
   inner join _1SJOURN j on
     DH768.sp758=SC224.id
   LEFT JOIN DH768 ON
     j.iddoc=DH768.iddoc
WHERE
SC224.code='0000725'


прошу не сильно ругать за дубовость.

$query  = "SELECT TOP 100 j.IDDOCDEF, j.docno ";
$query .= "FROM SC224 ";
$query .= "   inner join _1SJOURN j on ";
$query .= "     DH768.sp758=SC224.id ";
$query .= "   LEFT JOIN DH768 ON ";
$query .= "     j.iddoc=DH768.iddoc ";
$query .= "WHERE ";
$query .= "SC224.code='0000725' ";

Warning: mssql_query() [function.mssql-query]: message: The column prefix 'DH768' does not match with a table name or alias name used in the query. (severity 16)
29 сен 09, 16:16    [7721104]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
wweter,

ну так поменяйте местами j.iddoc и DH768.sp758 или как там у Вас таблицы связаны-то?
29 сен 09, 16:19    [7721122]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
wweter
[src]$query .= " inner join _1SJOURN j on ";
$query .= " DH768.sp758=SC224.id ";
Здесь после слова on напишите условие, по которому Вы хотите присоединить _1SJOURN
а не DH768
29 сен 09, 16:20    [7721124]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
wweter


Warning: mssql_query() [function.mssql-query]: message: The column prefix 'DH768' does not match with a table name or alias name used in the query. (severity 16)

условия JOIN-ов не должны использовать таблицы, которые объявлены далее
Что у вас и получилось для таблицы DH768

ЗЫ
Прежде, чем писать запрос, хорошо бы понять, какой результат вы собираетесь получить
29 сен 09, 16:20    [7721129]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
wweter
Member

Откуда: Севастополь
Сообщений: 34
daw

так, стоп. не то. а как у вас SC224 и _1SJOURN вообще связаны?
или там, действительно, декартово произведение должно быть?


связаны, связь выделил.

T=1SJOURN |Журналы |_1SJOURN |R
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=ROW_ID |Row ID |I |0 |0
F=IDJOURNAL |ID of Journal |I |0 |0
F=IDDOC |ID Document |C |9 |0


T=DH768 |Документ ПриходныйКассовый
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=IDDOC |ID Document's |C |9 |0
F=SP755 |(P)НомерОрдера |N |10 |0
F=SP756 |(P)ВидОперации |C |9 |0
F=SP757 |(P)Валюта |C |9 |0
F=SP758 |(P)Контрагент |C |9 |0


T=SC224 |Справочник Контрагенты |SC224 |R
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=ROW_ID |Row ID |I |0 |0
F=ID |ID object |C |9 |0
F=PARENTID |ID parent obj |C |9 |0
F=CODE |object code |C |7 |0
F=DESCR |object description |C |64 |0
29 сен 09, 16:21    [7721131]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
daw
Member

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

> связаны, связь выделил.

если правильно понял идею, то так:
SELECT TOP 100 j.IDDOCDEF, j.docno
FROM SC224
   cross join _1SJOURN j
   LEFT JOIN DH768 ON
     j.iddoc=DH768.iddoc and DH768.sp758=SC224.id
WHERE
SC224.code='0000725'

Posted via ActualForum NNTP Server 1.4

29 сен 09, 16:26    [7721157]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
1SJOURN x
inner join DH768 y on x.IDDOC  = y.IDDOC
left join SC224 z on y.SP758 = z.ID
-------------------------------------
Jedem Das Seine
29 сен 09, 16:28    [7721168]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
wweter
Member

Откуда: Севастополь
Сообщений: 34
daw

> связаны, связь выделил.

если правильно понял идею, то так:
SELECT TOP 100 j.IDDOCDEF, j.docno
FROM SC224
   cross join _1SJOURN j
   LEFT JOIN DH768 ON
     j.iddoc=DH768.iddoc and DH768.sp758=SC224.id
WHERE
SC224.code='0000725'


$query  = "SELECT TOP 100 j.IDDOCDEF, j.docno";
$query .= "FROM SC224 ";
$query .= "   cross join _1SJOURN j";
$query .= "   LEFT JOIN DH768 ON";
$query .= "     j.iddoc=DH768.iddoc and DH768.sp758=SC224.id";
$query .= "WHERE";
$query .= "SC224.code='0000725'";

Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near the keyword 'cross'.
29 сен 09, 16:30    [7721178]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
$query  = "SELECT TOP 100 j.IDDOCDEF, j.docno ";
$query .= "FROM SC224 ";
$query .= "   cross join _1SJOURN j ";
$query .= "   LEFT JOIN DH768 ON ";
$query .= "     j.iddoc=DH768.iddoc and DH768.sp758=SC224.id ";
$query .= "WHERE ";
$query .= "SC224.code='0000725'";

пробелы не забывайте
29 сен 09, 16:31    [7721190]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
я не знаком с php,
но хотелось бы обратить внимание автора на то,
что в исходном его примере везде были пробелы в начале и/или в конце строк
29 сен 09, 16:33    [7721199]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
wweter
daw

так, стоп. не то. а как у вас SC224 и _1SJOURN вообще связаны?
или там, действительно, декартово произведение должно быть?


связаны, связь выделил.

А вы точно знаете, какой результат хотите получить ?
Потому что вы уж как-то слишком легко "жонглируете" разными типами соединений
29 сен 09, 16:33    [7721201]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ТС,просто странный отчет,кросс из журнала заявок на документы +контрагенты
29 сен 09, 16:35    [7721219]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
wweter
Member

Откуда: Севастополь
Сообщений: 34
Glory
А вы точно знаете, какой результат хотите получить ?
Потому что вы уж как-то слишком легко "жонглируете" разными типами соединений


суть- таблица журналов _1SJOURN связана по IDDOC с таблицей DH768 (документов ПКО), в документе ПКО есть контрагент связанный по DH768 .sp758=SC224.id.

результат должен выбирать все документы ПКО из журнала, где контрагент имеет код '0000725'
29 сен 09, 16:39    [7721249]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
wweter
Member

Откуда: Севастополь
Сообщений: 34
Glory
А вы точно знаете, какой результат хотите получить ?
Потому что вы уж как-то слишком легко "жонглируете" разными типами соединений

честно говоря стыдно за несостоятельность в этом вопросе, но кроме как попросить помощи выхода нет.
29 сен 09, 16:42    [7721269]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при попытке передать в JOIN таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
wweter


результат должен выбирать все документы ПКО из журнала, где контрагент имеет код '0000725'

Почему же тогда порядок таблиц в запросе не соответствует этой постоновке задачи ?
Почему таблицы SC224, _1SJOURN объявляются раньше таблицы DH768 (документы ПКО) ?
29 сен 09, 16:44    [7721279]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить