Гость
Map
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды / 25 сообщений из 242, страница 1 из 10
07.06.2022, 19:34
    #58488
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Я почти ничего в SQL не понимаю, не, конечно, select * на табличку сделать могу, но что-то большее - увы, когда-то что-то тыркал, но очень давно, мне это в работе не требуется.

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

Я открыл доку, почитал, https://dev.mysql.com/doc/refman/8.0/en/

Вроде бы получился такой запрос
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
use NOSQL;
select v1_post.id, v1_post.user_id, v1_post.author, v1_topic.forum_id, v1_post.topic_id, v1_attachment.name
from v1_post
left join v1_attachment
on v1_post.id = v1_attachment.post_id
left join v1_topic
on v1_post.topic_id = v1_topic.id
where v1_post.user_id = '173' and v1_attachment.name is not null;
Вопрос, насколько он хуёвый и чего я не учёл?

Почему спрашиваю, вначале у меня какие-то дубли получались, однако если ебануть distinct, дубли удалялись. Но я так понимаю, если в запросе прибегнул к дистинкту - это плохо? Или нет?

В общем, я внимательно ещё раз посмотрел что к чему присобачивается, вроде бы всё норм. и количетсво строк - то, что и из таблички с вложениями.

На первой картинке просто количество вложений из таблички вложений, на второй табличка - которая меня интересует
pasted_image.png
pasted_image.png
...
Рейтинг: 0 / 0
07.06.2022, 19:39
    #58492
PaNik
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Хз как там в MySQL, но псевдонимы таблицам я бы назначил
...
Рейтинг: 0 / 0
07.06.2022, 19:41
    #58493
cat2
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Господа базоёбы, скок сюды
left join не нужен.
Просто JOIN.

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

Distinct плохо, значит ты не понимаешь структуру базы или она плоха.

Как правило нужно добавить ещё условия в join , или в условия

Where
...
Рейтинг: 0 / 0
07.06.2022, 19:43
    #58496
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
cat2  07.06.2022, 19:41
[игнорируется]
left join не нужен.
Просто JOIN.

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

Distinct плохо, значит ты не понимаешь структуру базы или она плоха.

Как правило нужно добавить ещё условия в join , или в условия

Where
про distinct навскидку уже понял, что это плохо.
...
Рейтинг: 0 / 0
07.06.2022, 19:45
    #58499
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
...
Рейтинг: 1 / 0
Нравится: PaNik
07.06.2022, 19:45
    #58500
cat2
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Господа базоёбы, скок сюды
Черт. Это же MySQl

Не знаю, как там LEFT JOIN по умолчанию

LEFT OUTER JOIN

или

LEFT INNER JOIN
...
Рейтинг: 0 / 0
07.06.2022, 19:46
    #58501
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Наверное оутер. Непонятно откуда у него дубли были
...
Рейтинг: 0 / 0
07.06.2022, 19:47
    #58503
PaNik
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
...
Изменено: 07.06.2022, 19:48 - PaNik
Рейтинг: 0 / 0
07.06.2022, 19:49
    #58504
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
...
Рейтинг: 0 / 0
07.06.2022, 19:49
    #58505
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
cat2  07.06.2022, 19:45
[игнорируется]
Черт. Это же MySQl

Не знаю, как там LEFT JOIN по умолчанию

LEFT OUTER JOIN

или

LEFT INNER JOIN
согласно доке - outer
...
Рейтинг: 0 / 0
07.06.2022, 19:50
    #58506
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  07.06.2022, 19:47
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
Так-то лефтами можно выстраивать порядок соединения выборки, есть такой лайфхак, но нормальный оптимизатор сам должен разбираться с такими вещами если можно индекс подцепить. Сейчас 2022 на лворе
...
Рейтинг: 0 / 0
07.06.2022, 19:51
    #58507
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  07.06.2022, 19:46
[игнорируется]
Наверное оутер. Непонятно откуда у него дубли были
я вначале к табличке с вложениями пытался прикрутить.
...
Рейтинг: 0 / 0
07.06.2022, 19:53
    #58508
PaNik
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  07.06.2022, 19:50
[игнорируется]
PaNik  07.06.2022, 19:47
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
Так-то лефтами можно выстраивать порядок соединения выборки, есть такой лайфхак, но нормальный оптимизатор сам должен разбираться с такими вещами если можно индекс подцепить. Сейчас 2022 на лворе
Крайний раз MySQL в 2006-м году трогал, чего там с оптимизатором сейчас - вообще без понятия [:prankster]
...
Рейтинг: 0 / 0
07.06.2022, 19:55
    #58510
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
...
Рейтинг: 0 / 0
07.06.2022, 19:59
    #58511
PaNik
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename, планы давай
...
Рейтинг: 0 / 0
07.06.2022, 20:05
    #58512
PaNik
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
Вообще в ms sql хорошо (в теории) было бы примерно так:

1) при наличии индекса по v1_post.user_id выбираем во времянку id и темы всех сообщения юзверя (их пока немного, это ж не Инос или Гарыныч с дедофорума с Овер 100к постов).
2) эту времянку inner join'ним на v1_attachment и v1_topic, выводим нужные поля.
...
Изменено: 07.06.2022, 20:06 - PaNik
Рейтинг: 0 / 0
07.06.2022, 20:14
    #58514
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  07.06.2022, 19:55
[игнорируется]
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
Пока о скорости речи нет, но на будущее может понадобится. Сейчас хочу просто корректный список на удаление формировать. У деды через интерфейс ничего не удаляется физически, только скрывается. Пока БД маленькая, проще подготовиться.
...
Рейтинг: 0 / 0
07.06.2022, 20:15
    #58515
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  07.06.2022, 19:59
[игнорируется]
basename, планы давай
Ха, если бы я их знал как делать :) ушёл от компа, посмотрю потом уже.
...
Рейтинг: 0 / 0
07.06.2022, 20:19
    #58519
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
PaNik  07.06.2022, 19:47
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
Тож так сначала подумал, что надо from v1_attachment сделать.
Но потом подумал, что на v1_post.user_id наверняка индекс есть.
Я потом покажу структуру для понимания.

Таблички с вложениями, топиками и форумами - небольшие. Табличка пост - самая объемная. Вот с ней вроде более менее список выводится, как ожидалось.
...
Рейтинг: 0 / 0
07.06.2022, 20:20
    #58520
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
А что мне в данном случае даст right?
...
Рейтинг: 0 / 0
07.06.2022, 20:22
    #58523
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  07.06.2022, 20:20
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
А что мне в данном случае даст right?
Иннер джоин
...
Рейтинг: 0 / 0
07.06.2022, 20:25
    #58525
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  07.06.2022, 20:14
[игнорируется]
паразит  07.06.2022, 19:55
[игнорируется]
basename  07.06.2022, 19:49
[игнорируется]
паразит  07.06.2022, 19:45
[игнорируется]
basename [игнорируется] 

почему лефт джоины используешь, ведь тебе именно аттачменте нужны?
к таблице post, самой объёмной, присоединяю остальные.
Понятно. Фик знает как там мусикл действует, но по сути ты сначала получаешь полную выборку и в том числе с сообщениями без аттачментов, а сверху накладываешь условие нот налл. Попробуй в условии склейки таблиц добавить этот нот налл. В фб такое прокатывали. Может побыстрее ьудет
Пока о скорости речи нет, но на будущее может понадобится. Сейчас хочу просто корректный список на удаление формировать. У деды через интерфейс ничего не удаляется физически, только скрывается. Пока БД маленькая, проще подготовиться.
Что исходное в задаче, от чего ты оттадкиваешься, айди пользователя, его имя или ещё что-то?
...
Рейтинг: 0 / 0
07.06.2022, 20:26
    #58527
PaNik
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа базоёбы, скок сюды
basename  07.06.2022, 20:19
[игнорируется]
Табличка пост - самая объемная.
Не суть, если там индекс по user_id include (post_id, topic_id), то все будет быстро (примерно к ms sql server)
...
Рейтинг: 0 / 0
Форумы / MySQL [закрыт для гостей] / Господа базоёбы, скок сюды / 25 сообщений из 242, страница 1 из 10
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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