| ||||
| ||||
|
![]() |
|
![]() ![]() |
#1 (permalink) |
Бессмертный
Регистрация: 17.02.2004
Адрес: Russia
Сообщений: 4,469
|
Тут много профессиональных программистов, может кто поможет начинающему?
Работаю с базой трекера, возникла такая задача. Если кто не в курсе, там хранятся все карты стола, каждая в своем столбце (итого 5 столбцов), стандартные двухбуквенные обозначения (9h - девятка червей). Нужно выбрать (посчитать) записи, скажем, где на столе 4 карты одной масти или где на столе лежит готовый сет. Может кто предложит не слишком громоздкий запрос? |
![]() |
![]() ![]() |
![]() |
#2 (permalink) |
Бессмертный
Регистрация: 08.02.2006
Адрес: Москва
Сообщений: 12,352
|
Это MySQL? А UserDefined Function в нём есть?
з.ы. Без них "не слишком громоздкий" запрос не получится. Сколько сравнений ты делаешь в уме, столько же придётся написать и в запросе.
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное. |
![]() |
![]() ![]() |
![]() |
#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) )
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное. |
![]() |
![]() ![]() |
![]() |
#4 (permalink) |
Участник
Регистрация: 23.12.2004
Адрес: Екатеринбург-Москва
Сообщений: 128
|
Если сделать красиво, то просто сложить все столбцы как строки и работать с одной строкой по количеству вхождений (но зависит от того поддерживает ли это база).
Если сделать громоздко, то может быстрее работать, поэтому не советую избегать ![]() Ни постгри ни аксесс не знаю, поэтому точный запрос не могу дать. Посмотрел Access - там такое вроде нельзя сделать. А так-то конкатенация строк + RegEx рулят ![]() |
![]() |
![]() ![]() |
![]() ![]() |
#5 (permalink) |
Бессмертный
Регистрация: 17.02.2004
Адрес: Russia
Сообщений: 4,469
|
CorwinXX, ты предлагаешь поиск от сета до каре (включая фулы) что немного шире, чем хотелось бы.
Appl, я тоже думал о складывании строк и выборке через like но при этом придется задавать отдельно все карты/масти - опять куча условий (по крайней мере как я сейчас это вижу). Интересует запрос, который будет работать на обоих базах (аксес и пострге). |
![]() |
![]() ![]() |
![]() |
#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)
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное. |
|
![]() |
![]() ![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ВОПРОС ПРОГРАММИСТАМ | 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 |
|
|