Поиск запросов 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
. Есть ли какое-либо решение, чтобы показать правильный результат?
Извините за плохой английский
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
";
Я считаю, что у вас должно быть только место для tb_label.label = (ваша пользовательская входная переменная: Dell)
Я верю, что вы хотите сделать
INNER JOIN tb_label
ON tb_device.label = tb_label.id