powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сложный запрос
7 сообщений из 7, страница 1 из 1
Сложный запрос
    #32414078
DЭN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуйста с запросом!
База находится на SQL 7.0
Имеются две таблицы plat и pl2 (у обоих имеется числовое поле 'cod'), мне необходимо найти в таблице 'plat' значение '1' в поле 'met' зпомнить значение с поля cod и отыскать это значение (их может быть несколько) в таблице pl2 по полю cod и впихнуть результат в курсор.

Вся проблема в сязи двух таблиц по коду plat.cod <-> pl2.cod

Наглядно это выглядит так!

Таблица Plat
----------------------------
cod | met | a1 | a2
__1_______1
__2_______1
__3_______1
__4_______1

-----------------------------

Таблица Pl2
----------------------------
cod | b1 | b2
----------------------------
__1___
__1___
__1___
__2___
----------------------------

Результат должен быть в сурсоре (должны объединится таблицы)

Курсор
plat.cod | plat.met | plat.a1 | plat.a2 | pl2.b1 | pl2.b2
------------------------------------------------------------
__1___
__1___
__1___
------------------------------------------------------------

Вот так!
Помогите пожалуста очень нужно
проблема как это записать на языке SQL
SQLEXEC(pConect, "SELECT*FROM plat WHERE met=1" ,'MySFaktur')

Впринципе у меня это получилось с помощь Queries зделать, но мне нада программным путем.

Заранее спасиба
...
Рейтинг: 0 / 0
Сложный запрос
    #32415132
Ruslan Ibraev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ansi SQL
Код: plaintext
SELECT plat.cod , plat.met , plat.a1 , plat.a2 , pl2.b1 , pl2.b2 FROM plat,Pl2 WHERE plat.cod=Pl2.cod

В Queries тоже должен сидеть запрос...
...
Рейтинг: 0 / 0
Сложный запрос
    #32415432
DЭN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасиба большое, ПОЛУЧИЛОСЬ
ты настоящий друг
...
Рейтинг: 0 / 0
Сложный запрос
    #32416764
DЭN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо связь установлена а как мне добавить туды фильтр (отобрать по полю met)

SELECT plat.cod , plat.met , plat.a1 , plat.a2 , pl2.b1 , pl2.b2 FROM plat,Pl2 WHERE plat.cod=Pl2.cod and plat.met=1

что то не прет? как записать правильно?
...
Рейтинг: 0 / 0
Сложный запрос
    #32416817
Ruslan Ibraev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все правильно, может нужно добавить
Код: plaintext
 and !ISNULL(src.met)
...
Рейтинг: 0 / 0
Сложный запрос
    #32416858
DЭN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну поробовал так он ваще в курсор не пихает результат
Как сделать даже и незнаю
SQLEXEC(pConect, "SELECT*FROM pl2,plat WHERE pl2.koddok=plat.koddok and !ISNULL(plat.met)",'trebtab2')

У тебя есть еще варианты?
...
Рейтинг: 0 / 0
Сложный запрос
    #32417135
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это не опечатка, то символ звездочки должен обрамлятся пробелами.

Код: plaintext
1.
2.
SQLEXEC(pConect, ;
 "SELECT * FROM pl2,plat WHERE pl2.koddok=plat.koddok and plat.met=1 ", ;
'trebtab2')


Функция IsNull() в SQL - это совсем не то, что одноименная функция в FoxPro. Это аналог фоксовской функции NVL(). Поэтому подобным образом ее использовать нельзя. В синтаксисе SQL проверка на NULL записывается так:

plat.met IS NOT NULL

или

IsNull(plat.met,0) = 1

И еще, желательно объединение таблиц писать через JOIN. Это и нагляднее и более правильно синтаксически, т.е. в данном случае это будет так:

Код: plaintext
SQLEXEC(pConect,  "SELECT * FROM pl2 INNER JOIN plat ON pl2.koddok=plat.koddok WHERE plat.met=1 ",'trebtab2')


Хотя это одно и то же, что и первый вариант.

Если результата все-таки нет, то проверь причину ошибки по AERROR() примерно так:

Код: plaintext
1.
2.
3.
4.
5.
IF SQLExec(...)< 0 
	* Есть ошибка. Выясняем причину
	LOCAL laError( 1 )
	=AERROR(laError)
	MessageBox( "Ошибка № " +STR(laError[ 5 ])+chr( 13 )+laError[ 2 ])
ENDIF
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сложный запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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