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