Size: a a a

2021 August 27

أ

أمير آسان in dbGeeks
Здравствуйте, друзья. Мы тут проводим исследование, будем благодарны, если поможете. Статой поделимся. Нужно ваше мнение. Если есть комментарии/замечания сверху или можете помочь с распространением опроса - только приветствуется. Опрос будет передаваться компаниям и публиковаться, так что ответная реакция, наверняка, будет. С админом согласовано.


https://docs.google.com/forms/d/e/1FAIpQLSdjKFO086CfKf9cA7Bbaq7357l2HFMYHQYa6llUMlj2zOe_Qg/viewform?usp=sf_link
источник
2021 August 30

(I

(;¬_¬) Ivan Zhuravle... in dbGeeks
источник
2021 September 03

DD

Dias Dusembek in dbGeeks
всем привет, (1, 1) inner join (1, 1) что будет ребята? по таблицам вроде понятно, берет общее, а на собесах так задают вопрос путаница, объсните пожалуйста кто сможет? или где можно подробнее почитать? p.s. не особо много работал с sql
источник

P

Phoenix in dbGeeks
Предполагаю что вопрос про понимание типов join и как они работают
источник

P

Phoenix in dbGeeks
источник

P

Phoenix in dbGeeks
за отсутсвие индексов в схеме и внешних ключей не пинать)
источник
2021 September 04

VK

Vladimir Karamazov in dbGeeks
Вопрос не сформулирован, но точно не по теме. Вы уже обращалась в phpGeeksJunior, там ему место
источник

(I

(;¬_¬) Ivan Zhuravle... in dbGeeks
@freelanceGeeks вот там ему место
источник
2021 September 08

P

PowerAxis in dbGeeks
Есть связь many-to-many через промежуточную таблицу. Как получить записи, у которых такой связи нет?
Например:


events
id

teachers
id

event_teacher
e_id, t_id
нужны все events.id где нет записи для этого id в event_teacher

Получается как-то так, нету возможности проверить, правда


SELECT e.id, e.date
FROM events as e
WHERE e.date < '2021-09-08' AND e.id NOT IN (
   SELECT et.event_id
   FROM event_teacher as et
   WHERE et.event_id = e.id
   )
GROUP BY e.id, e.date
источник

I

Ivanov in dbGeeks
Ещё есть конструкция NOT EXISTS (query)
источник
2021 September 09

EK

Evgeniy Kuvshinov in dbGeeks
А ещё есть известная картинка с джоинами
источник

EK

Evgeniy Kuvshinov in dbGeeks
источник

EK

Evgeniy Kuvshinov in dbGeeks
Слева, вторая сверху
A = events
B = event_teacher
источник
2021 September 10

S

Sergey in dbGeeks
Вопрос по джоинам. Пример выдуманный.
Есть пользователи, менеджеры. Менеджер берёт problem и делает из неё task. А task назначается пользователю для выполнения.
Есть такие таблицы.
TABLE users(id, name);

TABLE managers(id, name);

TABLE problems(id, name);

TABLE tasks(
   id,
   manager_id REFERENCES managers (id),
   problem_id REFERENCES problems (id)
);

TABLE users_tasks(
   user_id INTEGER REFERENCES users (id),
   task_id INTEGER REFERENCES tasks (id),
);

Я хочу получить всех пользователей со всеми taskами по менеджеру (find users with tasks by manager id)
Вот что-то типа такого, но чтобы у каждого пользователя был полный список заданий.
SELECT *
   FROM users
   INNER JOIN users_tasks ON users.id = users_tasks.user_id
   INNER JOIN tasks ON tasks.id = users_tasks.task_id AND tasks.manager_id = 1;

Не могу сообразить как соединить второй раз таблицу tasks
источник

P

PowerAxis in dbGeeks
О, прикольно, спасибо
источник

EK

Evgeniy Kuvshinov in dbGeeks
SELECT *
   FROM users
   INNER JOIN users_tasks ON users.id = users_tasks.user_id
   INNER JOIN tasks ON tasks.id = users_tasks.task_id
WHERE tasks.manager_id = 1;
источник

EK

Evgeniy Kuvshinov in dbGeeks
но такой вариант не очень так он выгружает всю базу и только потом фильтрует
источник

EK

Evgeniy Kuvshinov in dbGeeks
гораздо лучше получить список проблем за которые отвественне менеджер
по ним получить список задач (их иды)
и уже по задачам получить пользователей и сгрупировать иды пользователей (чтобы убрать дубли)
источник

EK

Evgeniy Kuvshinov in dbGeeks
SELECT user_id FROM users_tasks WHERE task_id in (SELECT id FROM tasks WHERE manager_id =  ?) group by user_id
вместо group by можно юзать distinct
источник

S

Sergey in dbGeeks
Тут трабл в том, что я получу юзеров, у которых есть первый менеджер. Туда не попадут таски от других менеджеров.
источник