powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы [новые:2] / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды, Поиск: Искать сообщения, созданные автором: Горбатый ёж  
25 сообщений из 35, страница 1 из 2
MySQL / Господа базоёбы, скок сюды
    #58665
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
cat2  07.06.2022, 19:41
[игнорируется]
left join не нужен.
Просто JOIN.

И тогда не нужно будет и условие and v1_attachment.name is not null;. Такие записи сами отсекутся при выполнении on v1_post.id = v1_attachment.post_id
Чегой?...
Это с какого суахили?
Я понимаю, что в данном случае имя у атачмента вряд ли будет null, но как оно связано с джойном и лефт джойном, мне понять не суждено.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58677
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename [игнорируется] 

Чего там прикладывать?
Лефт везде убери, раз тебе атачменты нужны.
С лефт джойном.
Ты берёшь, получаешь все посты пользователя и пришпандориваешь аттачи к тем постам, где они есть, вот тебе и дубли.
Туда же ещё и темы пришпандориваешь так же.

Смысла лефт джойна тем и постов нет, потому что темя с постами связаны по любому. А так как тебе надо только посты с аттачами, то и смысла лефт джойна с аттачами тоже нет.
ЗЫ но я не так лефты пишу, раз он левый то присобачиваемую таблицу пишу слева от знака =. Типа эстет.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58697
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename  07.06.2022, 21:41
[игнорируется]
Почему нет?
Потому что лефт покажет записи из постов даже те, у которых нет аттачей.
Зачем тебе они, если ты аттачи ищешь?
И зачем тебе показывать посты, которые не привязаны к топикам (с лефтом именно так ты и делаешь), если это как минимум странно? Как там планы в таком случае это майскуль построит ХЗ.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58699
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename [игнорируется] 

И я не уверен, что твоё условие attach.name is not null имеет смысл, как я понимаю у деды любой аттач имеет имя.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58705
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename  07.06.2022, 21:46
[игнорируется]
Он же все равно сканит таблицу полностью, потом селект делает. Так?
ХЗ.
По уму может выбрать посты по юзер_ид, а потом уже к ним присоединить всё остальное.
В любом случае, если ты ищешь аттачи, то лефт убирай.
Ну я я бы всё равно начал с аттачей,как бы привык начинать оттуда, что ищу.
Что-то вроде
Код: SQL
1.
2.
3.
4.
select v1_post.id, v1_post.user_id, v1_post.author, v1_topic.forum_id, v1_post.topic_id, v1_attachment.name
from v1_attachment
join v1_post on v1_post.id = v1_attachment.post_id and v1_post.user_id = '173'
join v1_topic on v1_topic.id = v1_post.topic_id;
...
Изменено: 07.06.2022, 21:52 - Горбатый ёж
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58707
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename  07.06.2022, 21:49
[игнорируется]
Горбатый ёж  07.06.2022, 21:45
[игнорируется]
basename [игнорируется] 

И я не уверен, что твоё условие attach.name is not null имеет смысл, как я понимаю у деды любой аттач имеет имя.
Без него просто показывает в столбце - null.

Короче, примеры надо показывать.
О как...
Значит я ошибаюсь.

Потому что лефт джойн используется.
...
Изменено: 07.06.2022, 21:52 - Горбатый ёж
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58926
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
cat2  07.06.2022, 22:00
[игнорируется]
Горбатый ёж  07.06.2022, 21:30
[игнорируется]
cat2  07.06.2022, 19:41
[игнорируется]
left join не нужен.
Просто JOIN.

И тогда не нужно будет и условие and v1_attachment.name is not null;. Такие записи сами отсекутся при выполнении on v1_post.id = v1_attachment.post_id
Чегой?...
Это с какого суахили?
Я понимаю, что в данном случае имя у атачмента вряд ли будет null, но как оно связано с джойном и лефт джойном, мне понять не суждено.
С left outer join будут выбраны все посты атора, в том числе и те, где нет аттачментов. С join - только те, у которых есть аттачменты
При чём здесь условие на поле name в общем случае?
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58927
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  07.06.2022, 22:01
[игнорируется]
У Бази в первоначальном запросе на таблицу постов накладывается ограничение по юзер_ид
А я предложил его убрать?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58928
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
Tammy Jo Saint Cloud  07.06.2022, 22:31
[игнорируется]
значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
Сомневаюсь, что у деды все аттачи в посте имеют одинаковые наименования.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #58938
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename  08.06.2022, 08:14
[игнорируется]
Горбатый ёж  08.06.2022, 08:09
[игнорируется]
Tammy Jo Saint Cloud  07.06.2022, 22:31
[игнорируется]
значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей
Сомневаюсь, что у деды все аттачи в посте имеют одинаковые наименования.
Ждите 39 минут и разберёте эту задачку
Я уже работать уйду.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59063
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
паразит  08.06.2022, 10:36
[игнорируется]
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
ну не такой уж хитрый, но направляет оптимизатор в нужном направлении. Я с ораклом с 10-ки не работал, сейчас его оптимизатор научился такой лайфхак разжевывать в иннер джойн?
Понятия не имею, я такие запросы не пишу.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59074
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
W  08.06.2022, 10:55
[игнорируется]
паразит  07.06.2022, 19:50
[игнорируется]
Так-то лефтами можно выстраивать порядок соединения выборки
нихуя
нихуя подобного
еббадь
Он прав, можно, но не только лефтами и было это давно.
Впрочем сейчас тоже есть возможность включить сию заебатую возможность используя хинт.
ЗЫ сцуко, как же меня заебал этот хинт во всех подряд запросах, даже если там всего 2 таблицы соединяются.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59077
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
W  08.06.2022, 10:58
[игнорируется]
это пидорская техника
зачем быть пидором?
В моём случае это наследие от которого я избавляюсь, где встречаю.
Пока ни один ревьювер не завернул конкретно это исправление.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59079
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
Ещё не очень понятно, зачем значение для user_id передавать в апострофах? Если это число, то и передавать его числом.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59131
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
паразит  08.06.2022, 11:15
[игнорируется]
может там тип чар у паля заипенел
Может и так.
Но мне кажется это базя просто перестраховался или пример неправильно понял.
Скорее всего для id дед использовал автоинкрементное поле, но оно вряд ли строковое.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59335
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  08.06.2022, 13:23
[игнорируется]
Горбатый ёж  08.06.2022, 08:04
[игнорируется]
Это конечно такой хитрый лайфхак, использование поля not null для имитации джойна при использовании лефт джойна, но в общем случае это не работает.
Чего???
Почему не работает???
Потому что в общем случае поле name в таблице аттачментов может быть null и ты потеряешь аттачмент.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59344
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59359
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  08.06.2022, 14:39
[игнорируется]
Горбатый ёж  08.06.2022, 14:29
[игнорируется]
PaNik  08.06.2022, 14:27
[игнорируется]
Там имя файла с аттачментом. Если там null - аттачмента нет.
Откуда ты знаешь все общие случаи?
А что делать, если аттачмент в систему приаттачивается посредством православного копипаста, который о опять таки в общем случае может не иметь никакого имени файла (в отличии от богомерзкого драгэндропа)?
basename, что хранится в поле v1_attachment.name?
Какая разница, я изначально писал, что способ конечно рабочий, но не в общем случае.
И вообще использовать такое вместо простого джойна - это странно.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59394
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #59815
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
PaNik  08.06.2022, 16:28
[игнорируется]
Горбатый ёж  08.06.2022, 15:21
[игнорируется]
PaNik  08.06.2022, 14:49
[игнорируется]
Вполне рабочий вариант.
Не в общем случае.
"Общие случаи" часто пагубно сказываться на производительности в данном конкретном случае
Интересно и как может пагубно сказаться на производительности замена left join на join?
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60156
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
Tammy Jo Saint Cloud  09.06.2022, 14:41
[игнорируется]
постгре
Эта не мелкая.
И всё равно я сомневаюсь, что замена left join на join может вызвать деградацию.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60158
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename  09.06.2022, 14:36
[игнорируется]
Я так и не понял до сих пор чем плох конкретно мой запрос.
Тем, что ты используешь left join.
Тебе он не нужен, потому что ты ищешь вложения.
Замени left join на join и убери условие name is not null.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60166
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename [игнорируется] 

id пользователя указывай без апострофов, копейки конечно, но мало ли.
В апострофах строковые данные пишутся, а id там int.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60171
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
Собственно поле name может быть null в аттачментах, поэтому с точки зрения БД ограничение name is not null может привести к потере аттачментов.
В остальном так и есть, простыми джойнами соединять и нормально отработает, потому что аттачмент дожен быть привязан к посту, пост к топику, а топик к форуму, на полях там стоит признак not null.
...
Рейтинг: 0 / 0
MySQL / Господа базоёбы, скок сюды
    #60173
Горбатый ёж
Скрыть профиль Поместить в игнор-лист
Участник
basename [игнорируется] 

Если тебе надо будет найти просто все посты автора, заодно посмотреть аттачменты, то делаешь left join на соединение поста и аттачмента.
...
Изменено: 09.06.2022, 14:59 - Горбатый ёж
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы [новые:2] / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды, Поиск: Искать сообщения, созданные автором: Горбатый ёж  
Читали тему (2): Анонимы (1), Yandex Bot 8 мин.
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Yandex Bot 8 мин.
Пользователи онлайн (37): Анонимы (22), Yandex Bot, IT-Клоп, Умник-практикующий, Ибрагимов Мага 82, basename, Bing Bot, Гарыныч 1 мин., Biene Maja 1 мин., паразит 1 мин., битый 1 мин., anonymous 3 мин., s62 4 мин., Три нитки 6 мин., Просто Трёп 7 мин., Ветер 8 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]