Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск по полям в 1 таблице / 4 сообщений из 4, страница 1 из 1
12.06.2008, 21:10
    #35371731
Романенко
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по полям в 1 таблице
позадумке - выбераем фирму(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.
В чем ошибка?
...
Рейтинг: 0 / 0
12.06.2008, 22:51
    #35371789
Fox Новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по полям в 1 таблице
Не совсем понятно, что за значения находятся в полях - firma, tip. Это первое.
Второе, зачем такие сложности с объединением, если запрос идет только к одной таблице.

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

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

При выполнении того, что я написал, у тебя значительно упроститься как сам запрос, так и вывод его результата.
...
Рейтинг: 0 / 0
13.06.2008, 10:25
    #35372003
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по полям в 1 таблице
Так он же тебе прямым текстом написал - дважды указал один и тот же алиас таблицы-источника в директиве FROM. Как анализатор будет разбирать из какой таблицы надо взять значение поля если алиасы одинаковые? В подобных случаях используют внутренние алиасы, примерно так:

Код: plaintext
1.
2.
3.
SELECT ... ;
FROM sklad!tovar as tovar1 ;
INNER JOIN sklad!tovar as tovar2 ON tovar1.firma = tovar2.tip ;
WHERE ...

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

Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL luFirma
luFirma = thisform.combo1.value

SELECT tovar.firma, tovar.tip ;
FROM sklad!tovar ;
WHERE tovar.firma = m.luFirma
...
Рейтинг: 0 / 0
13.06.2008, 12:30
    #35372177
Романенко
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по полям в 1 таблице
Спасибо огромное, буду пробывать.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск по полям в 1 таблице / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]