Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как определить наличие в таблице SQL записи с определёнными полями / 15 сообщений из 15, страница 1 из 1
10.10.2010, 23:18
    #36891721
swkx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
Клиент-сервер VFP-SQL
Мне нужно выяснить, есть ли в таблице 'ТаблицаSQL' запись (записи) с такими значениями полей:
Поле1=123, Поле2='ABC'

Сами данные не нужны, нужен только ответ "Да/Нет".

SELECT Поле1, Поле2 FROM ТаблицаSQL WHERE Поле1=123 AND Поле2='ABC' - единственный способ ?
Какой метод самый быстрый ?
Есть ли на SQL аналог фоксовсих SEEK и LOCATE ?
...
Рейтинг: 0 / 0
11.10.2010, 00:00
    #36891736
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
Код: plaintext
1.
Select * From ТаблицаSQL Where Поле1= 123  AND Поле2='ABC'
if _Tally> 0  then ...
...
Рейтинг: 0 / 0
11.10.2010, 00:03
    #36891737
Как определить наличие в таблице SQL записи с определёнными полями
swkxКлиент-сервер VFP-SQL
Мне нужно выяснить, есть ли в таблице 'ТаблицаSQL' запись (записи) с такими значениями полей:
Поле1=123, Поле2='ABC'

Сами данные не нужны, нужен только ответ "Да/Нет".

SELECT Поле1, Поле2 FROM ТаблицаSQL WHERE Поле1=123 AND Поле2='ABC' - единственный способ ?Можно еще сократить список полей раз уж они не нужны и сделать соответствующий индекс.
Какой метод самый быстрый ?Он единственный.
Есть ли на SQL аналог фоксовсих SEEK и LOCATE ?Нет. И понятия "номер записи" тоже нет.
...
Рейтинг: 0 / 0
11.10.2010, 00:08
    #36891743
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
Либо нам стороне сервера ХП делает запрос по факту, типа:
Select Top 1 From ТаблицаSQL Where Поле1=123, Поле2='ABC' into...
Затем FPV просто смотрит временную таблицу/представление на предмет количества записей.
...
Рейтинг: 0 / 0
11.10.2010, 08:07
    #36891846
swkx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
А этот запрос выполняется дольше?:
SQL COUNT(*) FROM ТаблицаSQL WHERE Поле1=123 AND Поле2='ABC'
...
Рейтинг: 0 / 0
11.10.2010, 10:05
    #36891944
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
swkxКлиент-сервер VFP-SQL
Мне нужно выяснить, есть ли в таблице 'ТаблицаSQL' запись (записи) с такими значениями полей:
Поле1=123, Поле2='ABC'

Сами данные не нужны, нужен только ответ "Да/Нет".
SELECT Поле1, Поле2 FROM ТаблицаSQL WHERE Поле1=123 AND Поле2='ABC' - единственный способ ?
Какой метод самый быстрый ?
Пошлите на сервер вот такой пакет:
Код: plaintext
1.
2.
3.
4.
IF EXISTS(SELECT * FROM ТаблицаSQL WHERE Поле1= 123  AND Поле2='ABC')
  SELECT  1  AS RecExist
ELSE
  SELECT  0  AS RecExist

В среднем, EXISTS работает быстрее, чем COUNT
swkx
Есть ли на SQL аналог фоксовсих SEEK и LOCATE ?
Нет. понятия "текущей записи" в MS SQL отсутствует.
С уважением, Алексей
...
Рейтинг: 0 / 0
11.10.2010, 10:11
    #36891959
Как определить наличие в таблице SQL записи с определёнными полями
swkxА этот запрос выполняется дольше?:
SQL COUNT(*) FROM ТаблицаSQL WHERE Поле1=123 AND Поле2='ABC'Дольше чего? Поймите, нет абсолютной оптимизации и нет команд всегда работающих быстрее других. Иначе бы только эти быстрые команды и существовали бы. Можно говорить о скорости работы конкретного запроса на конкретных данных на конкретной машине. Вы же пока говорите о сферическом запросе в вакууме. Еще раз повторю - в значительной степени скорость исполнения запроса зависит от наличия правильных индексов. Правильность индексов, кстати, тоже понятие относительное. Нет просто правильных индексов, есть правильные для конкретных запросов на конкретных данных.
...
Рейтинг: 0 / 0
11.10.2010, 17:37
    #36893185
swkx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
Всем спасибо, прояснили.

Aleksey-K,

отдельная благодарность за наводку))
...
Рейтинг: 0 / 0
14.10.2010, 10:46
    #36898713
swkx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
Подскажите, как в этой конструкции

SELECT * FROM ТаблицаSQL WHERE Поле1=Значение1

значения Поле1 и Значение1 взять из переменных ?
...
Рейтинг: 0 / 0
14.10.2010, 10:52
    #36898730
Как определить наличие в таблице SQL записи с определёнными полями
swkxПодскажите, как в этой конструкции

SELECT * FROM ТаблицаSQL WHERE Поле1=Значение1

значения Поле1 и Значение1 взять из переменных ?Вместо Значение1 просто подставить переменную. А во с именем поля так нельзя. Только генерация строки с запросом и ее последующее выполнение. То есть динамический sql, что не есть хорошо.
...
Рейтинг: 0 / 0
14.10.2010, 10:56
    #36898739
swkx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
Сработала вот такая конструкция

paramID = 'firmaid'
myID = 2
cmd = 'SELECT * FROM TableSQL WHERE ' +paramID+ ' = '+STR(myID)
= SQLEXEC(lnConn, cmd, 'tmpcursor')

Она имеет право на жизнь?
...
Рейтинг: 0 / 0
14.10.2010, 11:00
    #36898750
Как определить наличие в таблице SQL записи с определёнными полями
swkxСработала вот такая конструкция

paramID = 'firmaid'
myID = 2
cmd = 'SELECT * FROM TableSQL WHERE ' +paramID+ ' = '+STR(myID)
= SQLEXEC(lnConn, cmd, 'tmpcursor')

Она имеет право на жизнь?А, так генерация запроса таки в фоксе, а не на сервере? Имеет.
...
Рейтинг: 0 / 0
14.10.2010, 11:34
    #36898874
swkx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
Ура
...
Рейтинг: 0 / 0
14.10.2010, 13:54
    #36899321
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
swkxПодскажите, как в этой конструкции

SELECT * FROM ТаблицаSQL WHERE Поле1=Значение1

значения Поле1 и Значение1 взять из переменных ?
Мне проще так:
Код: plaintext
1.
2.
3.
LOCAL m.lcCommand
TEXT TO lcCommand TEXTMERGE NOSHOW PRETEXT  15 
       SELECT * FROM TableSQL WHERE <<paramID>> = <<myID>>
ENDTEXT
С уважением, Алексей
...
Рейтинг: 0 / 0
14.10.2010, 16:10
    #36899779
swkx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить наличие в таблице SQL записи с определёнными полями
Aleksey-K.

так ещё симпатичнее))
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как определить наличие в таблице SQL записи с определёнными полями / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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