powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / JOIN селект
7 сообщений из 7, страница 1 из 1
JOIN селект
    #39241547
andrey10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
mysql> explain select guid from workers_st where sguid=419946 and guid not in (select item from post_st where guid=419946);
+----+--------------------+---------------------+-----------------+---------------+------------+---------+-------+------+--------------------------+
| id | select_type        | table               | type            | possible_keys | key        | key_len | ref   | rows | Extra                    |
+----+--------------------+---------------------+-----------------+---------------+------------+---------+-------+------+--------------------------+
|  1 | PRIMARY            | workers_st          | ref             | sguid         | sguid      | 4       | const |  215 | Using where; Using index |
|  2 | DEPENDENT SUBQUERY | post_st             | unique_subquery | PRIMARY,guid  | PRIMARY    | 4       | func  |    1 | Using where              |
+----+--------------------+---------------------+-----------------+---------------+------------+---------+-------+------+--------------------------+



Подскажите, пожалуйста, как переделать этот запрос с JOIN? Пытаюсь
Код: sql
1.
select b.guid from post_st a join workers_st b on b.sguid=419946 and a.guid=419946 and b.guid not in (a.item);


но не выходит.
...
Рейтинг: 0 / 0
JOIN селект
    #39241555
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey10,

Код: sql
1.
2.
3.
SELECT workers_st.guid
FROM workers_st LEFT JOIN post_st ON workers_st.guid=post_st.item AND post_st.guid=419946
WHERE workers_st.sguid=419946 AND post_st.item IS NULL
...
Рейтинг: 0 / 0
JOIN селект
    #39241594
andrey10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
...
Рейтинг: 0 / 0
JOIN селект
    #39243543
andrey10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно изменить запрос добавив еще одну таблицу. Пытаюсь, но не выходит, выдает 0 результатов. Не понимаю почему.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
        mail_st.name
	workers_st.guid
FROM
	workers_st
LEFT JOIN post_st ON workers_st.guid = post_st.item AND post_st.guid = 419946
INNER JOIN mail_st ON mail_st.entry = post_st.mailentry
WHERE
	workers_st.sguid = 419946
AND post_st.item IS NULL



Таблицы:
Код: plsql
1.
2.
3.
workers_st (guid, sguid)
post_st (guid, item, mailentry)
mail_st (entry,name)
...
Рейтинг: 0 / 0
JOIN селект
    #39243642
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неверный порядок связывания таблиц, вероятно. LEFT JOIN требует связывать таблицы в порядке упоминания. Следующий INNER JOIN превращает первый LEFT в INNER. Условие во WHERE исключает наличие подходящих записей.
Пробуйте
Код: sql
1.
2.
3.
4.
FROM post_st 
INNER JOIN mail_st ON mail_st.entry = post_st.mailentry
RIGHT JOIN workers_st  ON workers_st.guid = post_st.item 
                      AND post_st.guid = 419946


либо
Код: sql
1.
2.
3.
4.
FROM workers_st
LEFT JOIN (post_st, mail_st)  ON workers_st.guid = post_st.item 
                             AND post_st.guid = 419946 
                             AND mail_st.entry = post_st.mailentry
...
Рейтинг: 0 / 0
JOIN селект
    #39243707
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey10
Код: plsql
1.
2.
3.
4.
5.
6.
7.
mysql> explain select guid from workers_st where sguid=419946 and guid not in (select item from post_st where guid=419946);
+----+--------------------+---------------------+-----------------+---------------+------------+---------+-------+------+--------------------------+
| id | select_type        | table               | type            | possible_keys | key        | key_len | ref   | rows | Extra                    |
+----+--------------------+---------------------+-----------------+---------------+------------+---------+-------+------+--------------------------+
|  1 | PRIMARY            | workers_st          | ref             | sguid         | sguid      | 4       | const |  215 | Using where; Using index |
|  2 | DEPENDENT SUBQUERY | post_st             | unique_subquery | PRIMARY,guid  | PRIMARY    | 4       | func  |    1 | Using where              |
+----+--------------------+---------------------+-----------------+---------------+------------+---------+-------+------+--------------------------+



Подскажите, пожалуйста, как переделать этот запрос с JOIN? Пытаюсь
Код: sql
1.
select b.guid from post_st a join workers_st b on b.sguid=419946 and a.guid=419946 and b.guid not in (a.item);


но не выходит.

А зачем? И так неплохо...
...
Рейтинг: 0 / 0
JOIN селект
    #39244015
andrey10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо, помогло!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / JOIN селект
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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