Выберите предметы, соответствующие именам и тем же категориям

0

Я не знаю, как сформулировать эту проблему, поэтому я просто покажу вам, ребята, что мне нужно.

У меня есть таблица вроде этого:

+----+----------------+------------+
| id |      name      |    med     |
+----+----------------+------------+
|  1 | seclo          | omeprazole |
|  2 | something else | other      |
|  3 | ometid         | omeprazole |
+----+----------------+------------+

и до сих пор я использую следующий запрос для получения записей.

SELECT * FROM item WHERE (name LIKE '%{$search}%' OR med LIKE '%{$search}%')

но теперь я хочу найти имя (или мед) и хочу, чтобы записи, имеющие ту же медитацию, что и те, которые соответствуют названию.

Например, если я поставлю "сек", я хочу записи 1 и 3, потому что запись 3 имеет ту же самую медитацию, которая соответствует записи 1.

я надеюсь, что вопрос ясен. заранее спасибо.

Теги:
database

3 ответа

1
Лучший ответ

Это поможет вам

SELECT * FROM item WHERE med IN (SELECT med from item WHERE name LIKE '%{$search}%' OR med LIKE '%{$search}%')
  • 0
    Я пытался придумать решение для соединения, но это действительно кажется намного чище +1.
  • 0
    @TimBiegeleisen спасибо
0

Вы должны использовать подзапрос, который ссылается на одну и ту же таблицу, чтобы получить необходимую med:

SELECT * 
FROM item 
WHERE med in (
    SELECT med 
    FROM item 
    WHERE (name LIKE '%{$search}%' OR med LIKE '%{$search}%')
OR name LIKE '%{$search}%')
  • 0
    Благодарю Человека! Работал как шарм!
  • 0
    я думаю, что вы пропустили скобки в конце.
Показать ещё 1 комментарий
0

//попробуй это..

SELECT * FROM 'item' WHERE 'med' IN (SELECT 'med' FROM 'item' WHERE ('name' LIKE '%{$search}%' OR 'med' LIKE '%{$search}%') OR 'name' LIKE '%{$search}%')
  • 3
    Спасибо за этот фрагмент кода, который может предоставить некоторую ограниченную краткосрочную помощь. Правильное объяснение значительно улучшило бы его долгосрочную ценность, показав, почему это хорошее решение проблемы, и сделало бы его более полезным для будущих читателей с другими, похожими вопросами. Пожалуйста, измените свой ответ, чтобы добавить некоторые объяснения, в том числе предположения, которые вы сделали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню