Jump to content
  • Sign Up

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


Recommended Posts

Имеется таблица 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

Link to post
Share on other sites

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

Link to post
Share on other sites
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')

 

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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 - сам комментарий

 

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

  • Thanks 1
Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

вот так:

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

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

  • Like 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • Full-R
      By Full-R
      Рекомендую выгодный хостинг Sprinthost, который поддерживает все версии PHP и Node.js.
      Производительность достаточная и есть возможность докупать процессные сервера. Например, для запуска ресурсоемких скриптов, которые садят сервер задницей в лужу для всех пользователей пока процесс кубаторит.
      Sprinthost.ru
      Цены спиртхоста уравновешенные, а качество обслуживания все таки повыше чем у конкурентов. Самый дешевый хостинг обходится в 118 рублей в месяц.
      Не банят при единоразовых всплесках нагрузки и дают ресурсов вплоть до потолка сервера на 1-2 часа без переплат.
      Можно регистрировать домены через reg.ru и по ночам отхватывать вкусные домены без переплат(я пол часа назад отхватил домен из 4х букв в зоне net за 1000 рублей).
      На серверах стоит Redhat или CentOS.
      Также дают бесплатные сертификаты SSL Let's Encrypt.
      Бэкап каждый день.
      Панель управления хостингом своя и очень удобная. Нет ни каких голимых запутанных опций.
    • belhost
      By belhost
      Всем привет!
      Бесплатная консультация по серверам и вопросам настроек, обращайтесь.
      Помогу чем смогу
      ————————————————————————————————
      Также предоставляю услуги:
      - Помощь c серверными рещениями при открытие IT проектов
      - Большой опыт в готовых IT решений для Вашего бизнеса
      - Подбор конфигурации сервера и размещение серверов
      - Регистрация и установка SSL и TLS а также Let's Encrypt
      - Оптимизация сервера под HighLoad. Nginx, PPH-FPM, HHTP2
      - Администрирование Ubuntu, Debian, Centos, Fedora, RedHat
      - Администрирование и мониторинг Windows Server 03/08/12
      - Установка панелей Plesk, ISP manager 4/5, DA, Vesta, WebMin
      - Установка систем виртуализации KVM, OpenVZ, VMWare, Hyper
      - Настройка сервера под Bitrix, WP, Joomla, Drupal, Yii, OpenCart
      - Установка и настройка мониторинга Munin, Nagios, Zabbix, Cacti
      - Гео распределенная фильтрация DDOS атак до 1000Gb/s
      - Организация системы Бэкапирования FTP, ЯД, DropBox, NAS
      - Мониторинг за состоянием сервера и его служб 24х7
      - Оперативное вмешательство при сбоях в работе служб сервера
      - Экстренное обращение к администратору 24х7 по телефону
      - Удаляем трояны/бэкдоры, спамботы, взломщики паролей
      - Удаляем программы-шпионы, DoS/DDoS агенты, iframe вставки
      - Удаляем рекламные блоки и прочие угрозы вашему сайту
      - Сервер БД MySQL, MsSQL, PostgresSQL, MariaDB, Percona
      - Общение с Тех Поддержкой Вашей хостинговой площадкой
      - Установка и настройка proxy сервера на базе Squid, 3proxy, l2tp
      - Установка и настройка почтового сервера Postfix, Exim, SendMail
      - Настройка цифровых подписей почты DKIM, SPF, DMARC, PTR
      - Настройка и установка VPN сервера PPTP, IPSec, L2Tp, OpenVPN
      - Настройка и установка сервера на AWS Amazon EC2, DigitalOcean
      - Администрирование и создание контейнеров Docker
      - Настройка и установка централизованного администрирование Ansible, RunDeck
      ————————————————————————————————
      Мои профили и отзывы на Биржах:
      FL.ru
      Weblancer
      freelancehunt
      freelance.ru
      5bucks.ru
      linkedin.com
      ————————————————————————————————
      Мои контакты:
      Сайт BEL-HOST | SKYPE: sys_admin3 | WhatsApp: +375256122681 | VIBER: +375256122681 | TELEGRAM: @gev511 |
    • mightybat
      By mightybat
      Добрый день.
      Есть форма(опросник), переменных на 200, подскажите как можно ее заполнить на компьютере1, и открыть на компьютере2 уже заполненную?
      Может быть есть человеческий способ, решения данной проблемы? 
      Вижу только вариант 1)сохранить все переменные в mysql 2)на втором компе вытащить из БД 3)воссоздать страницу HTML через echo( куча чекбоксов с oncliсk показывающими дивы, которые замучаюсь переписывать с block на none и наоборот).
  • Member Statistics

    47,218
    Total Members
    1,451
    Most Online
    RossProxy
    Newest Member
    RossProxy
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Свежие Темы

  • Последние сообщения

    • CrystalCrystal
      Full-R Естественно его там быть не должно, вы ведь перепутали значения маркированного и нумерованного списка. Тот атрибут, о котором речь в теме - считается актуальным, что мне и показалось весьма странным. Перечитайте тему внимательней.
    • iiwanc
      Здравствуйте!Простите, если не сюда пишу.Уже несколько дней не могу найти свою ошибку.Прошу помощи.Пишу сайт.Вверху страницы горизонтальное меню - фиксированное.Под горизонтальным меню вставляю видео с текстом. Видео затеняется с помощью overlay.Все вставляется, но под видео большой отступ, заполненный тенью от видео.Как убрать большой отступ?На скрине выделена область, которую необходимо убрать.Сильно не пинайте, пожалуйста, только начинаю изучать это дело.Сайт запускаю на OpenServer. В веб еще не выкладывал. Index <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Мой сайт</title> <link rel="stylesheet" type="text/css" href="style/style.css"> <link rel="stylesheet" type="text/css" href="style/style-video.css"> <link href="https://fonts.googleapis.com/css?family=Merriweather|PT+Sans+Caption:400,700&display=swap" rel="stylesheet"> <link rel="shortcut icon" type="image/x-icon" href="favicon/favicon.ico"> </head> <body> <div class="fullscreen-bg"> <div class="overlay"> <h1>Простой пример<br>фонового видео на сайте</h1> </div> <video loop="" muted="" autoplay="" poster="video/fotopromo.png" class="fullscreen-bg__video"> <source src="video/videopromo.mp4" type="video/mp4"> </video> </div> <?php include('header.php'); ?> <div class="layout"> <?php include('nav.php'); ?> <div class="content"> <h1>Название страницы</h1> <p>Бла-бла.</p> </div> </div> <?php include('footer.php'); ?> </body> </html> Style-video .fullscreen-bg { overflow: hidden; z-index: -100; position: relative; height: 100%; width: 100%; padding-top: 45%; } .fullscreen-bg__video { position: absolute; top: 0; left: 0; width: 100%; } .overlay { background: rgba(0,0,0,0.6); position: absolute; top:0; left:0; width: 100%; height: 100%; z-index: 4; } .overlay h1 { text-align:center; color:#fff; font-size: 70px; margin-top:17%; } @media (max-width: 767px) { .fullscreen-bg { background: url('../video/fotopromo.png') center center / cover no-repeat; } .fullscreen-bg__video { display: none; } .overlay h1 { font-size: 40px; } } Понимаю, что строка 7 в коде style-video отвечает за это, но не знаю как правильно ее прописать.Сейчас там прописано: padding-top:45%;При уменьшении процента, на моем экране хорошо отображается.Но что будет на других экранах?При уменьшении окна браузера, тень опять появляется.
    • Full-R
      Я не обратил внимания что такая глупость может быть у кого-то в мыслях.   Что нельзя делать можно проверить вот тут: Showing results for contents of text-input area - Nu Html Checker (w3.org) В общем на сам атрибут валидатор не ругается, но совершенно ясно что его тут быть не должно. Может быть для каких то скриптов это нужно, но лучше использовать атрибуты data. Они все легальные.   Даже в случае, если подразумевается стиль листа это не документировано.     В основном стилевые атрибуты остаются актуальны только для таблиц. Иногда их можно также встретить в SVG, но это уже другая история.    
  • Popular Contributors

×
×
  • Create New...