powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / join пустой таблицы если другие условия сопадают
6 сообщений из 6, страница 1 из 1
join пустой таблицы если другие условия сопадают
    #39214761
ezd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ezd
Гость
Здравствуйте.

Не подскажете как сделать join второй таблицы и искать в ней, при том что она может быть пуста?

На сколько я понимаю LEFT JOIN будет возвращать любой результат, не знаю, можно ли его тут применить.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE IF NOT EXISTS `t1` (
  `t1_id` int(10) unsigned NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `t1` (`t1_id`) VALUES
(1);

CREATE TABLE IF NOT EXISTS `t2` (
  `t2_ids` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Нужно получить примерно такое

Код: plaintext
SELECT t1.* FROM t1,t2 WHERE t1_id=1 OR FIND_IN_SET(t1_id,t2_ids)

То есть задача найти совпадение в t1 или указание на правильную запись в таблице t2. Но если таблица t2 пустая, то база не возвращает вообще ничего, даже если другие элементы WHERE являются TRUE.

А если добавить

Код: plaintext
INSERT INTO `t2` (`t2_ids`) VALUES ('2,3');

то база возвращает строку.

Как сделать чтобы работало с пустой таблицей? Но обязательно чтобы
t1_id=1 - было TRUE или FIND_IN_SET(t1_id,t2_ids) было TRUE
...
Рейтинг: 0 / 0
join пустой таблицы если другие условия сопадают
    #39214808
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ezd,

LEFT JOIN
...
Рейтинг: 0 / 0
join пустой таблицы если другие условия сопадают
    #39214851
ezd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ezd
Гость
MasterZiv,

И как оно будет выглядеть в итоге?

Код: plaintext
1.
2.
3.
SELECT t1.* FROM t1
LEFT JOIN t2 ON (FIND_IN_SET(2,t2_ids))
WHERE t1_id=100

Не дает ничего.
...
Рейтинг: 0 / 0
join пустой таблицы если другие условия сопадают
    #39214933
ezd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ezd
Гость
Методом тыка составил такое:

Код: plaintext
1.
2.
3.
4.
5.
INSERT INTO `t1` ( `t1_id` ) VALUES ( 2 ) ;

SELECT *
FROM t1
LEFT JOIN t2 ON (TRUE)
WHERE t1_id=100 OR FIND_IN_SET( t1_id, t2_ids )

Такая конструкция LEFT JOIN t2 ON (TRUE) вообще имеет право на существование? Какие подводные камни могут быть?
...
Рейтинг: 0 / 0
join пустой таблицы если другие условия сопадают
    #39214993
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ezdТакая конструкция LEFT JOIN t2 ON (TRUE) вообще имеет право на существование?
Ну... да. Можно было ON вообще не писАть, его отсутствие не криминал.
Вот только в итоге получился-то INNER JOIN...
...
Рейтинг: 0 / 0
join пустой таблицы если другие условия сопадают
    #39215069
ezd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ezd
Гость
Akina,

Да вот меня это и беспокоило, что именно INNER, но тогда с пустой таблицей не находит совпадений вообще. И без "ON", кстати, не работает, выдает ошибку (по крайней мере в моей версии мускула).
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / join пустой таблицы если другие условия сопадают
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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