Должно быть просто? 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;
Другие вопросы по тегам