| ||||
| ||||
|
Важные объявления |
|
05.06.2006, 16:27 TS | #1 (permalink) |
Бессмертный
Регистрация: 17.02.2004
Адрес: Russia
Сообщений: 4,469
|
Тут много профессиональных программистов, может кто поможет начинающему?
Работаю с базой трекера, возникла такая задача. Если кто не в курсе, там хранятся все карты стола, каждая в своем столбце (итого 5 столбцов), стандартные двухбуквенные обозначения (9h - девятка червей). Нужно выбрать (посчитать) записи, скажем, где на столе 4 карты одной масти или где на столе лежит готовый сет. Может кто предложит не слишком громоздкий запрос? |
0 |
05.06.2006, 16:56 | #2 (permalink) |
Бессмертный
Регистрация: 08.02.2006
Адрес: Москва
Сообщений: 12,352
|
Это MySQL? А UserDefined Function в нём есть?
з.ы. Без них "не слишком громоздкий" запрос не получится. Сколько сравнений ты делаешь в уме, столько же придётся написать и в запросе.
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное. |
0 |
05.06.2006, 17:19 | #3 (permalink) |
Бессмертный
Регистрация: 08.02.2006
Адрес: Москва
Сообщений: 12,352
|
Вот, например, запрос для определения сета на столе, когда на столе лежит 5 карт:
Код:
select * from hands where c1 is not null and c2 is not null and c3 is not null and c4 is not null and c5 is not null and ( left(c1, 1) = left(c2, 1) and left(c1, 1) = left(c3, 1) or left(c1, 1) = left(c2, 1) and left(c1, 1) = left(c4, 1) or left(c1, 1) = left(c2, 1) and left(c1, 1) = left(c5, 1) or left(c1, 1) = left(c3, 1) and left(c1, 1) = left(c4, 1) or left(c1, 1) = left(c3, 1) and left(c1, 1) = left(c5, 1) or left(c1, 1) = left(c4, 1) and left(c1, 1) = left(c5, 1) or left(c2, 1) = left(c3, 1) and left(c2, 1) = left(c4, 1) or left(c2, 1) = left(c3, 1) and left(c2, 1) = left(c5, 1) or left(c2, 1) = left(c4, 1) and left(c2, 1) = left(c5, 1) or left(c3, 1) = left(c4, 1) and left(c3, 1) = left(c5, 1) )
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное. |
0 |
05.06.2006, 17:20 | #4 (permalink) |
Участник
Регистрация: 23.12.2004
Адрес: Екатеринбург-Москва
Сообщений: 128
|
Если сделать красиво, то просто сложить все столбцы как строки и работать с одной строкой по количеству вхождений (но зависит от того поддерживает ли это база).
Если сделать громоздко, то может быстрее работать, поэтому не советую избегать Ни постгри ни аксесс не знаю, поэтому точный запрос не могу дать. Посмотрел Access - там такое вроде нельзя сделать. А так-то конкатенация строк + RegEx рулят |
0 |
05.06.2006, 22:45 TS | #5 (permalink) |
Бессмертный
Регистрация: 17.02.2004
Адрес: Russia
Сообщений: 4,469
|
CorwinXX, ты предлагаешь поиск от сета до каре (включая фулы) что немного шире, чем хотелось бы.
Appl, я тоже думал о складывании строк и выборке через like но при этом придется задавать отдельно все карты/масти - опять куча условий (по крайней мере как я сейчас это вижу). Интересует запрос, который будет работать на обоих базах (аксес и пострге). |
0 |
06.06.2006, 00:53 | #6 (permalink) | |
Бессмертный
Регистрация: 08.02.2006
Адрес: Москва
Сообщений: 12,352
|
Цитата:
з.ы. Например, для первой строчки: Код:
and left(c1, 1) <> left(c4, 1) and left(c1, 1) <> left(c1, c5) and left(c4, 1) <> left(c5, 1)
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное. |
|
0 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ВОПРОС ПРОГРАММИСТАМ | vovik11 | Вопросы от новичков | 4 | 21.03.2011 14:41 |
Вопрос к программистам по лобби ФТП | mr.kiris | Покер софт | 3 | 23.02.2011 23:20 |
Программистам - BetPot for PokerStars | MakoDim | PokerStars | 11 | 21.03.2010 21:44 |
Вопрос к администрации и программистам | Гламуризатор-р-р | Техническая поддержка форума | 16 | 21.02.2007 22:39 |
|
|