Поиск запросов PHP MySQL с внешним ключом

У меня есть 2 таблицы в моих базах данных, tb_device и tb_label, которые содержат это, например:

tb_device
id (AI)  |   type  |  label  |  etc
-------------------------------------
  1      |   A123  |    1    |  test
  2      |   A561  |    3    |  test2
  3      |   A777  |    2    |  test3
  4      |   A222  |    3    |  test4

tb_label
id (AI)  |  label
-------------------
  1      |  Samsung
  2      |  Apple
  3      |  Dell

И я уже создал форму CRUD (PHP), которая отображает tb_devices. И этот CRUD имеет форму поиска по каждому столбцу. Другие столбцы работают для поиска, но столбцы с метками не работают, потому что они содержат id из tb_label. Я хочу искать ярлык с названием ярлыка, например samsung, apple, dell, а не с номером. Мой код для поиска:

$sql = "SELECT *
            FROM tb_device a, tb_label b
            WHERE
                type LIKE '%".@$_POST['type']."%' AND
                (a.label=b.id AND b.label LIKE '%".@$_POST['label']."%') AND
                etc LIKE '%".@$_POST['etc']."%'
            ORDER BY type
    ";

Пытаюсь ввести dell, но результат:

      3      |   A777  |    2    |  test3

Пояснение: dell имеют номер id3, а результат показывает номер id3 из tb_device. Есть какое-нибудь решение, показывающее правильный результат?

Простите за плохой английский

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
257
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы пропустили b.label в своем запросе

 $sql = "SELECT a.*, b.label
                FROM tb_device a, tb_label b
                WHERE
                    a.type LIKE '%".@$_POST['type']."%' AND
                    (a.label=b.id AND b.label LIKE '%".@$_POST['label']."%') AND
                    etc LIKE '%".@$_POST['etc']."%'
                ORDER BY a.type
        ";

Я понял. Спасибо за ответ, сэр. Это работа :)

Levia 24.07.2018 06:53

Я считаю, что у вас должно быть только WHERE для tb_label.label = (ваша переменная пользовательского ввода: Dell)

Я считаю, что ты хочешь сделать

INNER JOIN tb_label
ON tb_device.label = tb_label.id

Другие вопросы по теме