Учение - подзапрос в с

Какими персонажами вы должны и которые вы не должны убежать, действительно зависит от того, с чем вы работаете.

Для PCRE и большинства других так называемых Perl-совместимых ароматов избегайте этих внешних классы символов:

.^$*+?()[{\|

и эти внутренние классы символов:

^-]\

Для POSIX расширенных регулярных выражений (ERE), избегайте этих внешних классов символов (таких же, как PCRE):

.^$*+?()[{\|

Выключение любых других символов является ошибкой с POSIX ERE.

Внутри классов символов обратная косая черта является буквальным символом в регулярных выражениях POSIX. Вы не можете использовать его, чтобы избежать чего-либо. Вы должны использовать «умное размещение», если хотите включить метасимволы класса символов в виде литералов. Поместите ^ в любом месте, кроме как в начале, в начале, а в начале или в конце класса символов, чтобы соответствовать этим буквально, например:

[]^-]

В основных регулярных выражениях POSIX (BRE), это метасимволы, которые вам нужно убежать, чтобы подавить их смысл:

.^$*

Выпуски из круглых скобок и фигурных скобок в BRE дают им особый смысл, который их неописуемые версии имеют в ERE. Некоторые реализации (например, GNU) также придают особое значение другим символам при экранировании, например \? и +. Сброс символа, отличного от. ^ $ * () {}, Как правило, является ошибкой с BRE.

Внутри классов символов BRE следуют тому же правилу, что и ERE.

Если все это делает голова спина, возьмите копию RegexBuddy . На вкладке «Создать» нажмите «Вставить маркер», а затем «Литерал». RegexBuddy добавит экраны при необходимости.

11
задан j0k 24 May 2012 в 09:09
поделиться

3 ответа

Это ответ:

$q = new Doctrine_RawSql();
$q->addComponent('t', 'Tag')
    ->select('{t.name}, {t.count}')
    ->from('(SELECT COUNT(*) as count, t.name,t.idtag
        FROM Tag t
            INNER JOIN Video_Has_Tag v USING(idTag)
        GROUP BY v.idTag
        ORDER BY count DESC
        LIMIT 50) t')
    ->orderBy('name');
9
ответ дан 3 December 2019 в 09:20
поделиться

Doctrine не может выполнить подзапрос в предложении FROM (и не может JOIN к подзапросу). Ваш текущий запрос Doctrine будет отсортирован по количеству, а затем по имени. Разве это не то, чего вы хотите?

1
ответ дан 3 December 2019 в 09:20
поделиться

Doctrine позволит вам поместить подзапрос в предложение FROM. Однако он может принимать только текстовые операторы DQL в подзапросе, вы не можете использовать другой объект запроса. Если вы переписываете свой подзапрос DQL в текстовой форме, вы сможете его использовать.

См. эту страницу документации для примера. В примере подзапрос DQL помещается в предложение WHERE, но упоминается, что вы можете использовать подзапросы в предложении FROM.

0
ответ дан 3 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: