Anonymous
Anonymous
вы хотите все одним запросом?
Anonymous
Вот думаю как оптимальней
Anonymous
думаю только UNION так сможет
Anonymous
А есть пример может быть какой-то?
Anonymous
http://www.yiiframework.com/doc-2.0/guide-db-query-builder.html#union
Anonymous
Я не про union а пример подобного запроса, так как не совсем понимаю, как его реализовать
Anonymous
Или имеется в видуцепочка последовательных селектов?
Anonymous
цепочка последовательных запросов
who are you
(SELECT person, amount FROM sales2005 WHERE amount=1000)
UNION
(SELECT person, amount FROM sales2005 WHERE person like 'Сергей');
Anonymous
Вариант, но не очень. Подумаю еще. Спасибо
who are you
http://www.sql.ru/docs/sql/u_sql/ch11.shtml
who are you
думаэ это то что нужно
who are you
подзапрос выполняется неоднократно, по одному разу для каждой строки таблицы основного запроса.
Sergey
Anonymous
Мускул
Sergey
тогда union, переходи на mariadb
Anonymous
Могу снести и поставить марию
Anonymous
Это не проблема
Sergey
но ставь 10.2 или postresql
who are you
а чем мария в этом моменте предпочтительней?
Sergey
оконными функциями
Dmytro
Dmytro
https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
Dmytro
http://stackoverflow.com/a/15585351
Anonymous
Спасибо Изучу обязательно
Anonymous
Пошел читать то что скинули. А до этого решил так =)) Получился такой монстр
SELECT
n.id,
n.niche,
sub_table.title,
sub_table.created_at
FROM
(SELECT
n_id,
title,
created_at,
@rn:=CASE
WHEN @var_n_id = n_id THEN @rn + 1
ELSE 1
END AS rn,
@var_n_id:=n_id
FROM
(SELECT @var_n_id:=NULL, @rn:=NULL) vars, resource
WHERE
n_id IN (SELECT n_id FROM niche)
ORDER BY n_id , created_at DESC) as sub_table
INNER JOIN niche n
on n.id=sub_table.n_id
WHERE
rn <= 2
ORDER BY n_id , created_at DESC
Dmytro
Пошел читать то что скинули. А до этого решил так =)) Получился такой монстр
SELECT
n.id,
n.niche,
sub_table.title,
sub_table.created_at
FROM
(SELECT
n_id,
title,
created_at,
@rn:=CASE
WHEN @var_n_id = n_id THEN @rn + 1
ELSE 1
END AS rn,
@var_n_id:=n_id
FROM
(SELECT @var_n_id:=NULL, @rn:=NULL) vars, resource
WHERE
n_id IN (SELECT n_id FROM niche)
ORDER BY n_id , created_at DESC) as sub_table
INNER JOIN niche n
on n.id=sub_table.n_id
WHERE
rn <= 2
ORDER BY n_id , created_at DESC
что-то очень много SELECT-ов
Dmytro
explain попробуйте сделать)
Ivan
Хай всем! В общем есть вопрос, у меня есть виджет который на главню страницу выводит статейки, function run()
{
// var_dump($this->hisId);
$history = Stories::find()->
where(['not',['id'=>$this->hisId]])->
select('id, author, text')->
orderBy(['date_create' => SORT_DESC])->
limit(3)->
all();
return $this->render('storylist',compact('history'));
} это код виджета, как мне огрничить количество
Ivan
*количество выводимых символов в поле text
Sergey
StringHelper::truncate
Ivan
я правильно понимаю, мне эту функцию в виде использовать?
Ivan
или где то в запросе? О_о
Sergey
Эта функция принимает строку и количество знаков. Соответственно да, в виде.
Ivan
Спасибо Сергей, сейчас попробую!
who are you
вид это файл представления?
Ivan
да
Dmytro
http://www.yiiframework.com/doc-2.0/yii-helpers-basestringhelper.html#truncateWords()-detail
этот метод будет по приятнее
Ivan
это файлы в котором ты выводишь из контроллера, ну если очень грубо объяснить
Dmytro
слова разрывать не будет
Ivan
окей, этот метод тоже попробую, спасибо!
Ivan
tringHelper::truncateWords - оболденная вещь!
Ivan
вот 20 символов
who are you
не
who are you
я спрашивал что с ними будет с длинными словами
Ivan
а, ну как я только что понял он его обрежет, для этого ты ставишь суффикс '...'
Ivan
наверно так)
Borys
Добрый день
Borys
Подскажите, пожалуйста
Borys
Можно ли как-то проверить значения массива на пустоту без использования цикла?
Borys
http://dl3.joxi.net/drive/2017/03/27/0017/0874/1139562/62/9c44bf4b56.png
Borys
т.е.
if (функция_проверки_на_пустоту_значения($массив) {
// действие
}
Zhandos
Empty()
Borys
empty вернет true, т.к. массив не пуст
Borys
а мне необходимо проверить на пустоту именно значения
Vladimir
Надо чтобы все были не пустыми?
Borys
Надо что-бы если хоть одно не пустое, делать действие N
Borys
Как сделать циклом - понятно, интересно может быть есть функция какая-то
Artur
in_array
Artur
?
Artur
if (in_array("", $array)) N();
Borys
Думаю еще насчет удаления пустых значений из массива и тогда проверку на пустоту массива. Или объединить значения в строку и проверить строку.
Borys
Borys
Это будет проверкой если хоть одна пустая, делать N.
Zhandos
А пройтись foreach и каждый элемент проверять?
Borys
Не то что мне нужно
Borys
Как сделать циклом - понятно, интересно может быть есть функция какая-то
Zhandos
Аааа
Artur
Artur
так равносильно же
Artur
аа
Artur
не пустое
Artur
понял
SiZE
Dmytro
Делайте for/foreach и break
Borys