Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Drein
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 7
1

Delphi ms access как скрыть дубликаты в результатах поиска

11.11.2013, 21:41. Просмотров 544. Ответов 8
Метки нет (Все метки)

Обясняю на примере существует две таблицы KNIGA и TEG
KNIGA:
id_книги имя_книги
1 книга1
2 книга2
3 книга3

TEG:
id_книги тег_книги
1 тег1
1 тег12
2 тег2

создаю запрос включающий данные из обеих таблиц и поэтому id повторяется.
Cоздаю поиск
Кликните здесь для просмотра всего текста

ADOQuery1.SQL.Add('SELECT * FROM запрос1');
ADOQuery1.SQL.Add('WHERE имя_книги like' + a + '%' + Edit1.Text + '%' + a);
ADOQuery1.SQL.Add('or тег_книги like' + a + '%' + Edit1.Text + '%' + a);

Проблема в том что я незнаю как скрыть ненужные результаты о тех же книгах с одинаковыми тегами.

Вопрос как отформатировать результаты по "id" чтобы таблица показывала только один результат с данным "id"?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 21:41
Ответы с готовыми решениями:

как пронумеровать позиции в результатах поиска
Сабж зы гуглил, да не нагуглил

Как поднять ссылку на сайт в результатах поиска поисковой системы Google
Если в результатах поиска поисковой системы Google кликнуть по ссылке на мой сайт, то через...

Как поднять ссылку на сайт в результатах поиска поисковой системы Яндекс ?
Если в результатах поиска поисковой системы Яндекс кликнуть по ссылке на мой сайт, то через...

Обозначения в результатах поиска
Подскажите пожалуйста, кто знает. В результатах поиска в Яндексе у некоторых позиций стоит дата, у...

Дополнительные ссылки, в результатах поиска
Привет. Иногда у сайтов, бывают какие то дополнительные ссылки, в резутатах поисковика. Пример,...

8
kmoiseev
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
11.11.2013, 22:27 2
Наверно я не правильно тебя понял?! Тебе нужно не показывать в таблице TEG id_книги?
Если да, то просто удали в DBGride этот Column.
0
Drein
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 7
11.11.2013, 23:15  [ТС] 3
Цитата Сообщение от kmoiseev Посмотреть сообщение
Наверно я не правильно тебя понял?! Тебе нужно не показывать в таблице TEG id_книги?
Если да, то просто удали в DBGride этот Column.
Нет мне нужно скрыть ненужные результаты с книгой которая уже есть в результах.
0
Waddonator
964 / 639 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
12.11.2013, 01:04 4
Цитата Сообщение от Drein Посмотреть сообщение
создаю запрос включающий данные из обеих таблиц и поэтому id повторяется.
Неизвестно, какие поля находятся в Вашем запрос1, т.к. данные Вы берете не из таблиц, а из запроса. Из этого вытекают все остальные вопросы.
1
12.11.2013, 01:04
Drein
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 7
12.11.2013, 09:31  [ТС] 5
Цитата Сообщение от Waddonator Посмотреть сообщение
Неизвестно, какие поля находятся в Вашем запрос1, т.к. данные Вы берете не из таблиц, а из запроса. Из этого вытекают все остальные вопросы.
запрос1
id_книги имя_книги тег_книги
1 книга1 тег1
1 книга1 тег11
2 книга2 тег1
3 книга3 тег2

В принципе я могу обойтись без запроса но все равно не понимаю как скрыть результаты о тех книг которые уже есть в результатах чтобы они неповторювались.
0
Waddonator
964 / 639 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
12.11.2013, 12:40 6
Цитата Сообщение от Drein Посмотреть сообщение
В принципе я могу обойтись без запроса
Так обойдитесь без него.
Цитата Сообщение от Drein Посмотреть сообщение
как скрыть результаты о тех книг которые уже есть в результатах чтобы они неповторювались.
Записи у Вас не повторяются. Первая и вторая строки отличаются. Если Вам без разницы, какой "тег_книги", зачем тогда Вы отображаете его в результирующей таблице, если именно это поле дает Вам "удвоение"?
Delphi
1
2
3
4
ADOQuery1.SQL.Add('SELECT DISTINCT b1.* FROM KNIGA AS b1');
ADOQuery1.SQL.Add('LEFT JOIN TEG AS b2 ON b1.id_книги=b2.id_книги');
ADOQuery1.SQL.Add('WHERE b1.имя_книги like' + QuotedStr('%' + Edit1.Text + '%'));
ADOQuery1.SQL.Add('or b2.тег_книги like' + QuotedStr('%' + Edit1.Text + '%'));
1
Drein
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 7
12.11.2013, 21:51  [ТС] 7
Большое спасибо, я уже не первой день ломал голову над этим вопросом.

Добавлено через 4 часа 20 минут
Waddonator, не могли бы вы мне подсказать как подключить несколько таблиц типа TEG. Просто я в языке sql новичок пробовал дописать сам ничего не получилось пока ищу в интернетеподсказку.
0
Waddonator
964 / 639 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
13.11.2013, 11:05 8
Цитата Сообщение от Drein Посмотреть сообщение
как подключить несколько таблиц
Используйте один из JOIN (INNER, LEFT, ...) и расставляйте скобки:
SQL
1
2
3
4
5
SELECT ...
FROM ((Table1 AS b1
LEFT JOIN Table2 AS b2 ON b1.Field2=b2.Field2)
LEFT JOIN Table3 AS b3 ON b1.Field3=b3.Field3)
LEFT JOIN Table4 AS b4 ON b1.Field4=b4.Field4
1
Drein
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 7
13.11.2013, 20:28  [ТС] 9
Цитата Сообщение от Waddonator Посмотреть сообщение
Используйте один из JOIN (INNER, LEFT, ...) и расставляйте скобки:
SQL
1
2
3
4
5
SELECT ...
FROM ((Table1 AS b1
LEFT JOIN Table2 AS b2 ON b1.Field2=b2.Field2)
LEFT JOIN Table3 AS b3 ON b1.Field3=b3.Field3)
LEFT JOIN Table4 AS b4 ON b1.Field4=b4.Field4
Спасибі виручив
0
13.11.2013, 20:28
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 20:28

ссылка на сайт в результатах поиска
Почему иногда ссылка на сайт в результатах поиска строит не прямая - сразу на URL, а через...

В результатах поиска ссылки на разделы
Ну, вот к примеру, ищу я фразу "туризм". Первый выскакивает www.turizm.ru и тут-же его разделы: ...

Пункты меню в результатах поиска
Даж не знал как назвать тему Заранее извиняюсь, если это известная штука. По некоторым запросам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.