Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Поиск по полям в 1 таблице  [new]
Романенко
Guest
позадумке - выбераем фирму(combo1), нажимаем поиск(button1), выводится список товара.

написал код Все действия осуществляються по одной таблице
где tovar.-это таблица
firma, tip - поля таблицы
sklad-база

SELECT tovar.firma, tovar.tip;
FROM ;
"sklad!tovar" tovar ;
INNER JOIN sklad!tovar ;
ON tovar.firma = tovar.tip; -- подозреваю что сдесь напутал
WHERE tovar.firma = (thisform.combo1.value)
thisform.combo1.SetFocus()

thisform.Refresh()
thisform.combo1.value=""

выдает сообщение такого вида There is a duplicate table alias 'TOVAR' in the FORM clause.
В чем ошибка?
12 июн 08, 21:10    [5798203]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полям в 1 таблице  [new]
Fox Новичек
Guest
Не совсем понятно, что за значения находятся в полях - firma, tip. Это первое.
Второе, зачем такие сложности с объединением, если запрос идет только к одной таблице.

И вообще, тут надо искать ошибку не в самом запросе, а в структуре базы данных.
Что нужно сделать?
Это - создать две таблицы, где в одной будет храниться перечень товаров (tovar), а во второй – перечень фирм (firms). При этом, в первой - должно быть поле, которое каждую строку товара будет однозначно привязывать к какой-то фирме. Например – idfirm. Тогда при составлении запроса, именно по этому полю и будет происходить объединение данных из этих таблиц. (ON firms.idfirm = tovar idfirm и конструкция - WHERE, для этой цели - будет уже не нужна)

Дальше, на форме нужно иметь, кроме комбобокса с переченем фирм – или еще один комбобокс, куда будет выводиться список товаров выбранной фирмы или, для тех же целей – Grid. Т.е. идея – очень проста, в одном комбобоксе выбираем – фирму, во втором комбобоксе (или Gridе) выводим список товаров, которые ей соответствуют.

При выполнении того, что я написал, у тебя значительно упроститься как сам запрос, так и вывод его результата.
12 июн 08, 22:51    [5798399]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полям в 1 таблице  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Так он же тебе прямым текстом написал - дважды указал один и тот же алиас таблицы-источника в директиве FROM. Как анализатор будет разбирать из какой таблицы надо взять значение поля если алиасы одинаковые? В подобных случаях используют внутренние алиасы, примерно так:

SELECT ... ;
FROM sklad!tovar as tovar1 ;
INNER JOIN sklad!tovar as tovar2 ON tovar1.firma = tovar2.tip ;
WHERE ...

Но, в данном конкретном случае вообще нет смысла связывать таблицу с самой собой. Зачем? Какую дополнительную информацию ты хочешь от этого получить? Тебе ведь, всего-лишь надо отфильтровать товары одной фирмы. Вот и фильтруй

LOCAL luFirma
luFirma = thisform.combo1.value

SELECT tovar.firma, tovar.tip ;
FROM sklad!tovar ;
WHERE tovar.firma = m.luFirma
13 июн 08, 10:25    [5798818]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по полям в 1 таблице  [new]
Романенко
Guest
Спасибо огромное, буду пробывать.
13 июн 08, 12:30    [5799138]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить