- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте, уважаемые коллеги!
Постараюсь изложить проблему коротко и ясно.
Есть запрос:
при значении `m`.`id` = '1' поле `m`.`categories` содержит значение 23,2 - следуя логике, данный запрос должен выводить 2 строки, точно так же, как и запрос:
но, вместо этого, выводится одна строка, как будто в условии стоит знак равенства, вместо IN:
Пробовал делать выборку с подзапросом:
в результате так же получаю одну строку, вместо двух.
В чём здесь подвох, кто подскажет? Почему работает запрос с конкретным указанием значений в условии IN и не работают остальные?
А почему две должно быть? У Вас LEFT и слева (из movies) одна строка и к ней идет внешнее объединение так же из одной строки.
Поставьте RIGHT будет Вам две :)
У Вас слева одна строка и к ней идет внешнее объединение так же из одной строки.
В том то и дело, что объединение должно производиться по двум строкам, так как поле `m`.`categories` содержит 2 идентификатора и выборка у нас идёт с условием IN. Второй запрос, при явном указании категорий (23,2), возвращает то, что мне нужно (2 строки), а остальные возвращают одну стоку. Почему так происходит мне не понятно.
Аа, я вообще про другое подумал ))
Наверно потому, что в IN же ищет по массиву, а не по строке..
Ну то есть Вы передаете не две переменные: '23' и '2', а одну - '23,2'.. Вот он одну строку и выводит..
потому, что с точки зрения SQL в выражении IN() m.categories - это одно строковое значение, а 23,6 - два числовых. Используйте FIND_IN_SET
потому, что с точки зрения SQL в выражении IN() m.categories - это одно строковое значение, а 23,6 - два числовых.
Вот теперь всё стало мне ясно. Спасибо!