powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Странное поведение JOIN
7 сообщений из 7, страница 1 из 1
Странное поведение JOIN
    #40057150
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Подскажите пожалуйста - это баг или я просто чего то не понимаю:
Есть вот такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT cln.id, o.*
  FROM orders AS o
       INNER JOIN metaorders AS m ON o.metaorder_id = m.id
       # LEFT JOIN clients cln ON m.client_id = cln.id
       LEFT JOIN (
                    SELECT id
                      FROM clients AS c
                 ) AS cln ON m.client_id = cln.id
       LEFT JOIN addresses AS addr ON cln.id = addr.client_id
WHERE 
      (cln.id IS NULL AND 
       EXISTS (SELECT 1 FROM order_products AS pdt WHERE (o.id = pdt.order_id) AND (pdt.product_id = 644))
      );


Реально есть одна запись в metaorders у которой client_id is null и есть подзаказ с товаром с product_id = 644.
В таблице addresses есть несколько записей у которых client_id is null (это похоже не правильно, но дело не в этом)
Используя
Код: sql
1.
LEFT JOIN (SELECT ...

или
Код: sql
1.
LEFT JOIN clients

я получаю разные результаты - это нормально и я что то не понимаю или это баг ?
...
Рейтинг: 0 / 0
Странное поведение JOIN
    #40057155
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimirzzz,

Что за решетка закралась в текст?


Vladimirzzz
разные результаты
Насколько разные?
Порядок записей может быть другим, это нормально.
...
Рейтинг: 0 / 0
Странное поведение JOIN
    #40057160
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
Vladimirzzz,

Что за решетка закралась в текст?


Vladimirzzz
разные результаты
Насколько разные?
Порядок записей может быть другим, это нормально.


Решетка - это комменарий.
В случае использования left join clients возвращается одна строка, а left join ( select.. - несколько - подозреваю что по количеству строк в addresses c client_id is nul
...
Рейтинг: 0 / 0
Странное поведение JOIN
    #40057169
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что я описал происходит под MySql 8.0.22 под linux.
Обнаружил что MySql 8.0.20 под windows при любом варианте возвращает одну строку
...
Рейтинг: 0 / 0
Странное поведение JOIN
    #40057301
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimirzzz
То что я описал происходит под MySql 8.0.22 под linux.
Обнаружил что MySql 8.0.20 под windows при любом варианте возвращает одну строку
Подобное бывает из-за upper/lower case различий в линуксе и винде. MySQL под линуксом по умолчанию различает регистр (как и ОС), под виндой нет. Но я ничего относящегося к этому нюансу в запросе не вижу. Но подумать в этом направлении стоит.
Вычлените конкретный код, который исполняется по-разному в разных ОСях.
...
Рейтинг: 0 / 0
Странное поведение JOIN
    #40057392
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimirzzz
То что я описал происходит под MySql 8.0.22 под linux.
Попробуйте сделать OPTIMIZE TABLE таблице clients.
Если это ничего не из изменит, то попробуйте пересоздать таблицу clients со всем её содержимым.
...
Рейтинг: 0 / 0
Странное поведение JOIN
    #40057735
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
Вечером попробую.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Странное поведение JOIN
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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