seraphim

Рейтинг
60
Регистрация
14.04.2008
Интересы
b27349

Ну я проверил. Возможно матчить

1) А всегда,

2) B - только если ранее не встречалась A,

3) C - только если ранее не встречались A или B.

Но только в том случае, если в 2 и 3 можно записать A и B или как статичную строку, или в крайнем случае как множество альтернативных статичных строк.

У меня (пока?) не получилось сконструировать шаблон вроде "Матчить произвольный шаблон B только если ранее не встречался произвольный шаблон А"...

За что люблю серч, так это за большое количество неравнодушных людей, у которых наготове всегда есть много разных непрошеных советов. Ну что поделать, плохо понимаю я беглый британский английский, особенно по телефону.

Вопрос между тем закрыт. Обошелся iMacros'ом для Firefox - чуть больше пятисот номеров пришлось перебрать...

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

TAFF,

нужно что-то с негативным просмотром назад, типа / (1) | ((?<!1).*?(2)) | ((?<![12]).*?(3)) /sx (s-для того, чтобы переносы строки сопоставлялись точке, х для того, чтобы в шаблоне игнорировались пробелы - так проще читать; и да, я НЕ проверял корректность срабатывания :))

Вообще в языке регулярных выражений есть и поиск по условию (?(?=если)то|иначе)... Нужно покурить хорошенько документацию. Думаю, что ваша задача разрешима силами только регэкспов...

Contao (ex. TYPOlight)

Каждая страница может иметь свой шаблон, свой набор подключенных СSS и скриптов. Шаблон практически любого модуля и блока на странице может быть кастомизирован полностью. Очень легко ставится. Расширяемый, активно развивающийся, много полезных доп. модулей доступно...

Отличный свободный двиг, с двумя лишь минусами: 1) ввиду гибкости требует некоторой минимальной квалификации для того, чтобы сделать на нем хороший сайт и 2) мизерное русскоязычное сообщество, поэтому вопросы (буде такие появляются) приходится задавать в буржуйском...

Уже самому интересно, что ему не нравится. Чуть позже посмотрю...

Интересный вариант с CASE :) И, по идее, полностью согласуется с логикой автора задачи.

Теперь если завернуть это в мой 2-й запрос из предложенных выше - по идее должно пройти проверку и на доп. базе, нет?

То есть если сделать так

SELECT t1.country,t1.Qty,min(t1.launched)

FROM (
...
) AS t1
LEFT JOIN (
...
) AS t2 ON t1.country=t2.country AND t1.Qty<t2.Qty
WHERE t2.Qty IS NULL
GROUP BY t1.country.t1.Qty

где вместо многоточий в скобках подставить ваш запрос, то все должно сработать. Теоретически :) Проверить пока нет возможности...

Покажите запрос, которым вы исходные данные привели к таблице, приведенной в первом сообщении темы.

Это не проблема, а... скажем так... мысли автора теста по теме.

Суть "добавочной" таблицы в том, что они лепят туда NULL'ы, которые не оговорены в условии (следуя букве стандарта - по дефолту любое поле может быть пустым). И если в поле launched будут NULL'ы, то может случиться, что количество кораблей с "неизвестным годом" будет для какой-то страны наибольшим (так работает группировка).

И автор теста считает, что с точки зрения предметной области это логическая ошибка, и нужно чекать таблицу ships на null'ы в поле launched при объединении и группировке по году. Но это на самом деле вопрос спорный.

Что лучше: не увидеть битых данных или увидеть их и принять решение о степени доверия им отдельно? Я бы выбрал второе, хотя автор считает, что правильно - первое.

Интересно, почему :) См. скриншот. Данные не ваши (от балды напихал), но вроде как именно то, что нужно получаем...

UPD. Зарегистрировался, посмотрел... Может, стоило с самого начала задачу привести "как есть"? :)

jpg sql_quest.jpg
Всего: 381