tor243

Помогите с запросом

Рекомендованные сообщения

Имеется таблица table с полями id, refpost, type и comment. Тип поля comment TEXT.

Необходимо получит строки, где refpost у которой type='A' или type='D', который встречается в поле comment.

Пробовал так:

SELECT id, refpost, type, comment
	FROM table
    WHERE comment
    LIKE 
   		(
        SELECT refpost
          	FROM table
          	WHERE type='A'
          	OR type='D'
        )

Без результатов. Выдает ошибку 1242: Subquery returns more than 1 row

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Switch74, пробвал IN, ничего не выдает.

Вот таблица.

 

 

table1.jpg

Изменено пользователем tor243

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в вашем случае лучше разбить без вложенного запроса сделать через цикл и для LIKE использовать %...%

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
SELECT * FROM `table` AS t WHERE t.comment LIKE CONCAT('%',t.refpost,'%') AND t.type IN ('A','D')
или так
SELECT * FROM `table` AS t WHERE INSTR(t.comment,t.refpost) AND t.type IN ('A','D')

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я так понял ТС нужно получить refpost из A или D, а потом найти все строки в comment которых упомянут refpost
что-то вроде:
пришел вопрос в тех поддержку (type=A или D)
все последующее общение по данной теме маркируется в comment установленным refpost

возможно я не так понял и тогда предложенные варианты @wwt более чем

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Switch74, Вы правильно поняли. Первый вариант wwt выдает синтаксическую ошибку а второй выводит только те строки, где type='A' или 'D'. На прикрепленном примере они встречаются и в 'C' и в 'F'.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Такс, если я верно понял что нужно получить то вот так:

SELECT 
t.id as id,
t2.refpost as refpost,
t.type as type,
t.comment as comment
FROM `table` as t 
LEFT JOIN `table` t2 ON t2.type IN ('A','D') 
WHERE INSTR(t.comment, t2.refpost)

В итоге выборки должен быть получен массив где

id это идентификатор записи

refpost это рефпост по которому была найдена запись ( он может повторятся если было найдено несколько постов где в поле comment встречается данный refpost, по этому элементу их можно сгруппировать, а очередность комментариев сделать тупо сортировкой по полю id ибо оно уникально и новая запись всегда имеет больший номер)

type это тип записи

comment - сам комментарий

 

ЗЫ Верную работоспособность нужно тестировать ибо я по-быстрому на тестовой базе проверил, и не факт что выборка всегда ведет себя адекватно. Если опять чото не то написал тапками чур не кидаться =)) Я немного не трезв 😃

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

wwt, Супер. По крайне мере я вижу уже что-то похожее на то что мне необходимо.

Я Вам очень благодарен. Вы гений.

Очень долго возился и у меня ничего не получалось. Так как я не хорошо разбираюсь в Mysql, пока. Если Вы могли бы объяснить как работает Ваш запрос буду признателен.

Огромное Вам спасибо. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтобы понять что происходит нужно убрать условие выборки в основном запросе и добавить в вывод данные

вот так:

SELECT 
t.*,
t2.refpost as t2refpost
FROM `table` as t 
LEFT JOIN `table` t2 ON t2.type IN ('A','D') 

Грубо говоря через джоин к каждой записи таблицы присоединяется каждый вариант refpost у которого тип равен А или D и потом проверяется через INSTR на соответствие условию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: mightybat
      Добрый день.
      Есть форма(опросник), переменных на 200, подскажите как можно ее заполнить на компьютере1, и открыть на компьютере2 уже заполненную?
      Может быть есть человеческий способ, решения данной проблемы? 
      Вижу только вариант 1)сохранить все переменные в mysql 2)на втором компе вытащить из БД 3)воссоздать страницу HTML через echo( куча чекбоксов с oncliсk показывающими дивы, которые замучаюсь переписывать с block на none и наоборот).
    • Автор: flagmanfbe
      Здравствуйте.
      Я веб-разработчик, занимаюсь написанием современных динамических сайтов, сайт, блог и интернет магазин. В реализации использую три движка Joomla, WordPress и Opencart. В зависимости от задачи, выбирается один из этих движков.
      Языки программирования:
          HTML, CSS, Javascript, PHP
      Фреймворки:
          LESS, SASS, Bootstrap, jQuery
      Движки (CMS):
          Joomla, WordPress, Opencart
      Минимальный вариант, готовый сайт за 20$
      • настройка понравившегося шаблона для CMS
      • установка дополнений и их настройка (плагины, модули, компоненты)
      • привязка хостинга к домену
      • установка сайта на хостинг
      • настройка хостинга
      Другие работы:
      • написание шаблона
      • правка шаблона
      • натягивание шаблона на движок
      • установка и настройка дополнительных компонентов для движка
      • установка ваших скриптов на сервер
      • и другие работы...
      Обращайтесь.
      Site: http://rocketusd.ru/napisanie-sajta
      Email: flagmanfbe@gmail.com
      Skype: live:flagmanfbe_1
      Всем удачи в достижении своих целей!!!
    • Автор: typeoferi
      Доброго времени суток, форумчане. По дипломному проекту мне задали создание сайта, на котором можно будет распространять платные курсы, которые ведёт моё образовательное учреждение. Нужны: регистрация, вход само собой, сама продажа курсов с автоматической записью людей в группы, в каждой группе определённое количество человек, а так же нужно будет через этот сайт следить за посещаемостью (вообще не понимаю зачем) курсов. Курсы оффлайновые, то есть группа людей в соответствии со своим расписанием будут приходить в образовательное учреждение в установленное время и обучаться. Дело в том, что создание сайтов мы изучали на 2 курсе ровно 2 недели. Чутка выучили html и совсем плохо css. Ищу совета в том, с чего мне начинать, что мне понадобится, какая cms для этого будет лучше и нужна ли она будет вообще.. Ну вы поняли, ищу любого совета. Заранее благодарю.