|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.02.2012, 11:48 | #1 |
Пользователь
Регистрация: 19.12.2011
Сообщений: 16
|
Поиск максимальной записи!
Всем здравствуйте!
У меня такая проблема, написал курсач на delphi по бд чемпионат мира по футболу, и в итоге оказалось сделал ошибку в лог. модели, т.е. весь курсач неправильный, но препод. разрешил не переписывать курсач если смогу сделать поиск результативного игрока(который забил больше всего голов) среди всех игроков в разных таблицах. У меня всего 10 таблиц с составами игроков(во всех таблицах значения столбца ID_IGROKA одинаковые) и 10 таблиц со статистикой этих команд. Нужно найти максимально игрока среди них! Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('select ID_IGROKA, FIO, DR, AMPLUA, GOLI from anglia.dbf a, stat_igr.dbf st, argentina.dbf ar, stat_arg.dbf sta'); Query1.SQL.Add('where FIO="'+Edit5.Text+'" and'); Query1.SQL.Add('sta.GOLI=(select max(sa.GOLI) from stat_arg.dbf sa)and ar.ID_IGROKA=sta.ID_IGROKA'); Query1.SQL.Add(''); Я начал писать запрос и остановился, потому что не совсем представляю как будет осуществляться поиск! Может кто-нибудь сможет мне хоть что-то посоветовать как это реализовать и поможет написать это! |
09.02.2012, 12:55 | #2 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Молодец твой препод) Как ловко подвёл к вопросу - а зачем было создавать 2*10 одинаковых таблиц) проще было в одной добавить поле с принадлежностью игрока к определённой команде.
Правильно поставленная задача - три четверти решения.
|
09.02.2012, 13:34 | #3 |
Пользователь
Регистрация: 19.12.2011
Сообщений: 16
|
просто нужно было что бы получилось больше сущностей поэтому пришлось создавать 2 разных таблицы, но я протупил и создал 20)) вот и сижу теперь парюсь!
|
09.02.2012, 14:49 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
По одной сборной можешь найти лучшего забивальщика? Объедини с помощью UNION такие запросы для всех сборных и выдерни лучшего из объединенного подзапроса. Не помню только даст ли BDE такой изврат совершить над кучей dbf
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.02.2012, 14:56 | #5 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Я как-то пробовал - не получилось) но можно пойти другим, извращённым, путём: сделать отдельную временную табличку по лучшим бомбардирам (через вышеописанный вариант с кучей Union) и сделать в ней отдельную выборку.
Правильно поставленная задача - три четверти решения.
|
09.02.2012, 15:01 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Что не получилось? Выложи структуру таблиц сюда и запрос для определения лучшего в одной команде и то что пробовал делать с UNION
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.02.2012, 15:26 | #7 |
Пользователь
Регистрация: 19.12.2011
Сообщений: 16
|
Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('select a.FIO, st.GOLI from anglia.dbf a, stat_igr.dbf st where st.GOLI=(select max(s.GOLI) from stat_igr.dbf s)and a.ID_IGROKA=st.ID_IGROKA'); Query1.Open; Вот поиск лучшего игрока в сборной Англии и еще есть для 9 других стран, а нужно чтобы искал одного игрока среди всех таблиц! Получается 10 таблиц с составом имеют одинаковые поля: ID_IGROKA, FIO, DR, AMPLUA И так же для каждой из этих таблиц есть таблица со статистикой игроков(в ней описано кол-во сыгранных игор игроком и забитые голы): ID_IGROKA, KOL_IGOR, GOLI Связаны они по ID_IGROKA Аватар, я не знаю как пользоваться этими UNION, приведи пример хотя бы пожалуйста! |
09.02.2012, 15:56 | #8 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Код:
Правильно поставленная задача - три четверти решения.
|
|
09.02.2012, 15:57 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Попробуй, только учти, не отлаживал
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 09.02.2012 в 16:06. |
09.02.2012, 17:47 | #10 |
Пользователь
Регистрация: 19.12.2011
Сообщений: 16
|
набрал код, запустил, по нажатию на кнопку выдает ошибку:
project1 вызвал исключение класса EDBEngineError с сообщ. "Invalid use of keyword" Token: select Line Number2 Вот какой код получился: Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('select v.FIO, v.GOLI from'); Query1.SQL.Add('(select a.FIO, st.GOLI from anglia.dbf a,stat_igr.dbf st where a.ID_IGROKA=st.ID_IGROKA union'); Query1.SQL.Add('select ar.FIO, sta.GOLI from argentina.dbf ar,stat_arg.dbf sta where ar.ID_IGROKA=sta.ID_IGROKA union'); Query1.SQL.Add('select ger.FIO, stg.GOLI from germania.dbf ger,stat_ger.dbf stg where ger.ID_IGROKA=stg.ID_IGROKA union'); Query1.SQL.Add('select fr.FIO, stf.GOLI from franz.dbf fr,stat_fr.dbf stf where fr.ID_IGROKA=stf.ID_IGROKA union'); Query1.SQL.Add('select isp.FIO, stis.GOLI from ispania.dbf isp,stat_isp.dbf stis where isp.ID_IGROKA=stis.ID_IGROKA union'); Query1.SQL.Add('select it.FIO, stit.GOLI from italia.dbf it,stat_ita.dbf stit where it.ID_IGROKA=stit.ID_IGROKA union'); Query1.SQL.Add('select m.FIO, stm.GOLI from mexika.dbf m,stat_mex.dbf stm where m.ID_IGROKA=stm.ID_IGROKA union'); Query1.SQL.Add('select pa.FIO, stpa.GOLI from paragvay.dbf pa,stat_par.dbf stpa where pa.ID_IGROKA=stpa.ID_IGROKA union'); Query1.SQL.Add('select por.FIO, stpo.GOLI from portugal.dbf por,stat_por.dbf stpo where por.ID_IGROKA=stpo.ID_IGROKA union'); Query1.SQL.Add('select sc.FIO, stsc.GOLI from schweizer.dbf sc,stat_sch.dbf stsc where sc.ID_IGROKA=stsc.ID_IGROKA) v'); Query1.SQL.Add('where v.GOLI=(select max(t.GOLI) from'); Query1.SQL.Add('(select GOLI from stat_igr.dbf union'); Query1.SQL.Add('select GOLI from stat_arg.dbf union'); Query1.SQL.Add('select GOLI from stat_ger.dbf union'); Query1.SQL.Add('select GOLI from stat_fr.dbf union'); Query1.SQL.Add('select GOLI from stat_isp.dbf union'); Query1.SQL.Add('select GOLI from stat_ita.dbf union'); Query1.SQL.Add('select GOLI from stat_mex.dbf union'); Query1.SQL.Add('select GOLI from stat_par.dbf union'); Query1.SQL.Add('select GOLI from stat_por.dbf union'); Query1.SQL.Add('select GOLI from stat_sch.dbf)t)'); Query1.Open; Последний раз редактировалось volfmen15; 09.02.2012 в 18:05. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В квадратной матрице найти столбец с максимальной суммой и строку с максимальной суммой (Pascal) | Alexey355 | Помощь студентам | 1 | 26.03.2011 14:06 |
Выполнить поиск записи в форме | Познающий | Microsoft Office Access | 6 | 08.06.2010 19:09 |
Поиск записи в поле со списком | Swatch | Microsoft Office Access | 1 | 23.12.2009 19:09 |
поиск записи после обновления | smoky | Microsoft Office Access | 1 | 12.05.2009 00:20 |
Поиск последней записи в определенной строке | Maxx | Microsoft Office Excel | 5 | 04.03.2009 14:01 |