Должно быть просто? MySQL запрос: заменить идентификатор (int) в одной таблице заголовком (varchar) из другой таблицы
У меня есть вопрос, который мне кажется очень простым, но я не могу найти на него ответ. У меня есть две таблицы: A & B. В таблице A есть столбец с id-s (int), таблица B связывает эти идентификаторы с описаниями (varchar.). Я хочу сделать запрос к таблице A, где я заменяю id с описаниями из таблицы B (отношение один-один). В настоящее время у меня есть этот запрос:
select tableA.* from tableA join tableB on (tableA.id=tableB.description);
Это должно сделать работу, кроме этого я получаю предупреждение 1292: "Усеченное неверное значение DOUBLE".
Я понимаю, что это значит, два типа данных не совпадают. Но тогда как заставить это работать? Я уверен, что это должно быть простым исправлением, и то, что я прошу, используется все время (например, замените ISBN на название книги и т. Д.)...
Любая помощь приветствуется!
Редактировать по запросу
Извините люди, я думал, что это не было неоднозначно... Db структура:
mysql> describe tasks;
+----------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------------------+------+-----+---------+----------------+
| tid | int(10) unsigned | NO | PRI | NULL | auto_increment |
| pid | int(10) unsigned | YES | | NULL | |
| username | varchar(15) | YES | | NULL | |
| task | varchar(1000) | NO | | NULL | |
+----------+-----------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
mysql> describe projects;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| pid | int(10) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(200) | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
Я хочу "выбрать * из задач", где каждый pid заменяется соответствующим заголовком из таблицы проектов в том же запросе.
Надеюсь, теперь стало понятнее...
1 ответ
Вы можете просто использовать следующий запрос для объединения содержимого обеих таблиц, получая все записи из таблицы задач, даже если к ним не присоединен ни один проект:
SELECT t.tid, t.username, t.task, p.title
FROM tasks t
LEFT JOIN projects p ON t.pid = p.pid;
Если вы просто хотите, чтобы задачи с прикрепленным проектом использовались вместо этого:
SELECT t.tid, t.username, t.task, p.title
FROM tasks t
JOIN projects p ON t.pid = p.pid;