Поиск запросов 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. И у этой дряни есть форма поиска по каждому столбцу. Другие столбцы работают для поиска, но столбцы меток не работают, потому что они содержат 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 имеют id номер 3, а результат показывает id номер 3 из tb_device. Есть ли какое-либо решение, чтобы показать правильный результат?

Извините за плохой английский

Author: Php Pirate, 2018-07-24

2 answers

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

 $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
        ";
 3
Author: Siddhartha esunuri, 2018-07-24 04:46:08

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

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

INNER JOIN tb_label
ON tb_device.label = tb_label.id
 0
Author: John Fischer, 2018-07-24 04:53:24