Совпадения в бд

  • Автор темы Guest
  • Дата начала
G

Guest

#1
Всем доброго времени суток! Сразу к делу. Задали написать программу которая работает с базой (db), должна иметь две функции, это поиск по базе, с помощью указанных параметров, и вторая функция это поиск схожих записей. С первым заданием справился. А вторая функция напрягает. Я подумал над тем как написать цикл. То есть имею два дбгрида в одном гриде сама база, в другую будут выводиться совпадающие записи, и кнопка при нажатии на который будут происходить цикл. Цикл вот такой, есть переменная, она берет первую запись в таблице и сравнивает с остальнми записями, и так далее, все совпавшие записи показываются в дбгрид2. Вопрос, как реализовать такой цикл? З.Ы. Я не практиковался в программировани в базах данных.. Гуглил, не нашел такого.
 
G

Guest

#3
Всем доброго времени суток! Сразу к делу. Задали написать программу которая работает с базой (db), должна иметь две функции, это поиск по базе, с помощью указанных параметров, и вторая функция это поиск схожих записей. С первым заданием справился. А вторая функция напрягает. Я подумал над тем как написать цикл. То есть имею два дбгрида в одном гриде сама база, в другую будут выводиться совпадающие записи, и кнопка при нажатии на который будут происходить цикл. Цикл вот такой, есть переменная, она берет первую запись в таблице и сравнивает с остальнми записями, и так далее, все совпавшие записи показываются в дбгрид2. Вопрос, как реализовать такой цикл? З.Ы. Я не практиковался в программировани в базах данных.. Гуглил, не нашел такого.
Доброго времени суток!
Попробуй решить задачу используя SQL. К примеру -
- Программно сформируй SQL запрос такого вида -
Selece * From имя_таблицы Where имя_поля = 'значение_из_первой_записи' or имя_поля = 'значение_из_второй_записи' or.......
имя_поля = 'значение_из_Nой_записи';

т.е. в цикле ты должен перебрать все записи и сформировать строку (имя_поля = 'значение_из_первой_записи' or имя_поля = значение_из_второй_записи' or.......имя_поля = 'значение_из_Nой_записи':ya_lamo:
затем добавить к сформированной строке начало запроса (Selece * From имя_таблицы Where)
записать этот запрос в свойство SQL компонента TQuery и после вызвать метод Open тогоже компонента.
TQuery сформирует набор данных соответствующий запросу который ты сможешь просмотреть в отдельном DBGrid'e

Надеюсь помог, если что пиши
===============================
C уважением Александр
 
G

Guest

#4
мне нужно без сиквела, да и это слишком долго. просто нада взять цикл с одной переменной которая будет брать значение с первой и так далее строкой и сверять с остальными и так до конца а совпадения выводить во второй дб грид
 
G

Guest

#5
мне нужно без сиквела, да и это слишком долго. просто нада взять цикл с одной переменной которая будет брать значение с первой и так далее строкой и сверять с остальными и так до конца а совпадения выводить во второй дб грид
Твой вариант будет работать медленнее и вот почему -
в моем варианте необходимо один раз пробежать все строки - в твоем брать одну и сравнивать с остальными, брать другую и опять сравнивать с остальными, и т.д. т.е. к примеру если в ТБД будет 100 записей, то цикл будет состоять из 100 * 100 = 10000. Зачем цикл из 10 000 повторений если можно всего из 100. А если в ТБД будет куда больше записей?
И второе - как ты все схожие записи выведешь в DBGrid? Таким циклом ты их просто обнаружишь и что дальше? Создавать программно таблицу и записывать туда данные, чтобы вывести в DBGrid? Реализовать можно, но куда сложнее предложенного мной варианта.

Но как говориться на вкус и цвет ......

================================
С уважением Александр
 
G

Guest

#6
АлександрДакис ну при обнаружении можно же сделать так что при обнаружении совпадений они записывались в дб грид, это возможно просто я не знаю как это воплотить
 
G

Guest

#7
АлександрДакис ну при обнаружении можно же сделать так что при обнаружении совпадений они записывались в дб грид, это возможно просто я не знаю как это воплотить
а вот так просто не получится - DBGrid это компонент предназначенный для отображения данных, а не для их хранения!
 
G

Guest

#8
ну с сиквелом я ноль. можете реализовать мне что нбудь подобное, буду благодарен!
 
G

Guest

#9
Цикл вот такой, есть переменная, она берет первую запись в таблице и сравнивает с остальнми записями, и так далее, все совпавшие записи показываются в дбгрид2. Вопрос, как реализовать такой цикл? З.Ы. Я не практиковался в программировани в базах данных.. Гуглил, не нашел такого.
И что у тебя получиться в итоге, такая же таблица с такими же записями? (Или я чего-то не понял ?)
Если тебе нужно вывести все совпадения по n-ой записи, тогда встаешь на эту запись получаешь
значение и формируешь запрос: select * from table where "поле" like ":значение" % тогда выведет
все совпадения по значению. В качестве :значение использовать параметр.
 
G

Guest

#10
сделайте пожалуста поиск с помощью сиквел по базе. в виде исходников если не трудно скиньте, а то я уже не знаю как это сделать.
 
G

Guest

#12
<style type="text/css">@import url(http://www.google.com/cse/api/branding.css);</style><div class="cse-branding-bottom" style="background-color:#FFFFFF;color:#000000"> <div class="cse-branding-form"> <form action="http://www.google.ru/cse" id="cse-search-box" target="_blank"> <div> <input type="hidden" name="cx" value="partner-pub-9522070088145711:itpxzrl8xir" /> <input type="hidden" name="ie" value="windows-1251" /> <input type="text" value="цук" name="q" size="31" /> <input type="submit" name="sa" value="Поиск" /> </div> </form> </div> <div class="cse-branding-logo">
</div> <div class="cse-branding-text"> Найдется все!   </div></div>
 
G

Guest

#13
да один маленький пример, что так трудно? vital если ты и за такие вещи деньги берешь ты жалок.
 

lazybiz

Well-known member
03.11.2010
1 339
0
#14
да один маленький пример, что так трудно? vital если ты и за такие вещи деньги берешь ты жалок.
Если такие как ты будут приходить на форум и говорить "сделайте не в падлу" и им будут делать, то жалок станет весь форум. А люди вокруг будут становиться все довольнее и тупее.
Если ты не понял, что он своим вопросом хотел мотивировать твою задницу поднять себя с дивана и попробовать найти хоть какое-то решение самому то я тебе сочувствую...