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

Тема в разделе "Delphi - Базы данных", создана пользователем -, 30 окт 2010.

  1. Гость

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

    тут есть знающие люди или форум лежит??
     
  3. Гость

    Доброго времени суток!
    Попробуй решить задачу используя SQL. К примеру -
    - Программно сформируй SQL запрос такого вида -
    Selece * From имя_таблицы Where имя_поля = 'значение_из_первой_записи' or имя_поля = 'значение_из_второй_записи' or.......
    имя_поля = 'значение_из_Nой_записи';

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

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

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

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

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

    ================================
    С уважением Александр
     
  6. Гость

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

    а вот так просто не получится - DBGrid это компонент предназначенный для отображения данных, а не для их хранения!
     
  8. Гость

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

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

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

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    А денег сколько?
    Или слабо самому?
     
  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"> [​IMG] </div> <div class="cse-branding-text"> Найдется все!   </div></div>
     
  13. Гость

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

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Если такие как ты будут приходить на форум и говорить "сделайте не в падлу" и им будут делать, то жалок станет весь форум. А люди вокруг будут становиться все довольнее и тупее.
    Если ты не понял, что он своим вопросом хотел мотивировать твою задницу поднять себя с дивана и попробовать найти хоть какое-то решение самому то я тебе сочувствую...
     
Загрузка...

Поделиться этой страницей