Shokha
вот сам сущность
Nikolay
Передать через необязательный аргумент в конструкторе, как вариант. И тест можно переделать вместо моков стабы
Shokha
вот сам сущность
пока что туда добавил #[ORM\HasLifecycleCallbacks] и убрал createdAt из тела конструктора передал его через prePersist только не знаю верный способ или нет
artem
вот сам сущность
Я не совсем разбираюсь. Мб стоит в конструктор в тесте передать дату аргументом?
artem
Вопрос на обучение) чем union отличается от full join?
Сергей
Yurii
Я не совсем разбираюсь. Мб стоит в конструктор в тесте передать дату аргументом?
$mock = $this->getMockBuilder(Client::class) ->disableOriginalConstructor() ->getMock(); $stream = new Stream(json_encode($expectedResult, JSON_THROW_ON_ERROR)); $createPageResponse = new Response(body: $stream); $mock ->method('request') ->willReturn($createPageResponse); self::getContainer()->set('some.service', $mock);
artem
union складывает, join умножает
Full join также складывает 2 таблицы)
Павел
Вопрос на обучение) чем union отличается от full join?
Джоины таблицы в колонки дополнительные добавляют, а union в строки
Павел
Т.е. совсем разные вещи. Ну или я не понял вопроса)
artem
Т.е. совсем разные вещи. Ну или я не понял вопроса)
Та это просто скучно стало. Думал попрут умные ответы за использование памяти))
artem
Начнут с индексации полей
artem
Лучше чего?
Чем в тест инжектить реализацию
Иван
юнион - это к результату одного запроса подклеивается другой
Иван
в те же столбцы
Иван
можно запросить сегодняшние видосики и сегодняшние картинки
Иван
джоин, когда к сегодняшним картинкам ты подклеиваешь авторов сегодняшних картинков
Иван
а какая зарплатная вилка в вашей компании?
artem
а какая зарплатная вилка в вашей компании?
В флп Захолодило? Ещё не задумывался
Сергей
Full join также складывает 2 таблицы)
full join дает декартово произведение между таблицами, ограниченное условием в on. union к одному набору строк добавляет другой набор
artem
а какая зарплатная вилка в вашей компании?
Самое прикольное что вас туда точно не возьмут) Прибалтика. Там русскоязычных не берут
Максим
Всем привет, ищем PHP middle разработчика с опытом на Symfony, пишите в лс)
Иван
кстати, я вот думаю если какое-то особо злобное условие запроса, будет ли юнион на ту же таблицу хорошим решением
artem
я казахский по освежителю изучал!
Та самому (украинцу) обидно когда русских не берут, ладно ещё с рашки. Много же талантливых людей, которые даже на пхп ни разу не писали. Нормальные люди. Они от держания в руках пистолета уже в обморок падают
The Ant
джоин, когда к сегодняшним картинкам ты подклеиваешь авторов сегодняшних картинков
так-то джойном можно подклеить самого себя, да еще и с заменой
The Ant
джоин, когда к сегодняшним картинкам ты подклеиваешь авторов сегодняшних картинков
вот зацени переводы с фоллбеком SELECT t.tag_id, IFNULL(r.name, f.name) as name FROM tag t LEFT JOIN tag_translation r ON (t.tag_id = r.tag_id AND r.lang_id=2) LEFT JOIN tag_translation f ON (t.tag_id = f.tag_id AND f.lang_id=1) ORDER BY t.tag_id ASC
The Ant
сука, кривой... ладно
Иван
ну ты тут два перевода берёшь
The Ant
да, кривой пример )
artem
Окс. Это же можно переписать в union, в чем профит?
The Ant
попробуй
Иван
Окс. Это же можно переписать в union, в чем профит?
в том, что с юнионом у тебя два перевода придут в разных записях и тебе надо будет пересклеивать
Иван
ты не сможешь просто извлечь в хеш массив по первичному ключу
Павел
Окс. Это же можно переписать в union, в чем профит?
Чет даже теоретически не могу понять как это можно в юнион переписать...
The Ant
в union all м.б можно
Павел
в union all м.б можно
Ну это надо перевод запихать в name тега, в id тоже что то запихать, потом склеить на php и все равно чето не складывается.
Павел
в union all м.б можно
Этот просто дубликаты строк оставляет
The Ant
да? я думал простой юнион дубликаты оставляет )
Павел
да? я думал простой юнион дубликаты оставляет )
Одна из оптимизаций юниона - это как раз делать all, когда знаешь что тебе нечего там дистинктить
The Ant
вообще в мускле юнион кривой какой-то. Мерджит результаты хер пойми как. Толи дело в кликхаусе, мердж с приоритетом последнего )
artem
Одна из оптимизаций юниона - это как раз делать all, когда знаешь что тебе нечего там дистинктить
Попробую остановить холивар. Допустим задача экспорта из 2х таблиц. Что быстрее сработает, union/full join, и почему?
Павел
И как тут join работает и зачем он тут.
Павел
Че то лыжи не едут
artem
Окс. Просто нужно 2 таблицы выгрузить, например, в эксель. Через пыху
Павел
Окс. Просто нужно 2 таблицы выгрузить, например, в эксель. Через пыху
Если 2 таблицы выгрузить с разной структурой, то union вообще мимо
Павел
Можно конечно одну под вторую подстроить, но это какой то мазохизм. Да и join тут зачем...
Сергей
Можно конечно одну под вторую подстроить, но это какой то мазохизм. Да и join тут зачем...
он имеет ввиду что их надо склеить по какому-то признаку. типа left join t2 on t2.id = t1.id
Павел
он имеет ввиду что их надо склеить по какому-то признаку. типа left join t2 on t2.id = t1.id
Ну я понимаю, что если 2 таблицы надо например в 1 смержить (ну типичный join), то так и надо, какие еще варианты. Но если совершенно разные таблицы, зачем их джоинить
Павел
Если например одна таблица сама на себя с разными условиями, или 2 похожих таблицы - тут еще имеет смысл осбуждать наверное join vs union
Павел
Я как вариант. Просто нужно выгрузить 2 таблицы. У них ничего общего. Допустим адрес и хз что)
Если у них ничего общего и разная структура зачем тут вообще join или union?
artem
Усё) сильно ушли мимо топика
The Ant
знаешь где юнион хорош? в статистике! Когда генерируешь дефолт набор данных с нулями для графика, а потом юнионом грузишь реальные данные, а потом выбираешь максимальное ну типа SELECT date, MAX(`val1) FROM ( SELECT DATE() - INTERVAL 7 DAY. 0 union SELECT DATE() - INTERVAL 6 DAY ... SELECT date, val1 from my table ) as x GROUP BY date
Юра
SELECT * FROM @symfony_ru WHERE user LIKE 'bot'
Павел
С юнион еще по приоритетам неплохо соединять. Например: Сначало вывести заказы с такой кучей условий, потом с другой кучей условий, потом с третьей кучей условий. Каждую группу в отдельный union, и приоритет числом, а потом снаружи сортировка по приоритету. Хотя наверное это самый распрастраненный кейс)
Юра
У менч вот задача выбрать посты ближайшие к такой-то дате максимум 10 штук
Юра
Я так понимаю без юнионов тоже тут не особо?
Юра
А вообще пойду спрошу ИИ че это я )
Nikolai
У менч вот задача выбрать посты ближайшие к такой-то дате максимум 10 штук
date diff по дате, сортировка по date diff и лимит на 10 штук, не?
Юра
Прийдется выбрать все даты
Юра
Не эффективно
Nikolai
У менч вот задача выбрать посты ближайшие к такой-то дате максимум 10 штук
выбрать больше какой-то даты или больше и меньше?
Юра
Значит и те что больше и те что меньше
Nikolai
Значит и те что больше и те что меньше
А если сделать две выборки, >= limit 10 и <= limit 10 и сделать по ним date diff? первый костыль который в голову пришел)