Как говорится в названии, я пытаюсь использовать INNER JOIN
для столбцов, которые имеют разные значения/типы данных.Возможно ли ввести INNER JOIN 2 id другого типа/значений?
В одной таблице базы данных назовем ее. Таблица A Я хочу сделать оператор select, чтобы получить значения нескольких столбцов (Subject, Name, Description, Date). Хотя я также хочу имя отношения. Однако проблема состоит в том, что имя отношения (которое задано в таблице отношений, таблица B) отображается в таблице A в виде строкового значения (D0001001) - так что это не как буквальное имя.
Чтобы получить литеральное имя отношения, существует ссылка с таблицей B, в которой есть столбец идентификатора 1001 - 1000 ~ и столбец имени 'literal'. Так, например, в таблице B ID 1001 соответствует название компании MC DONALDS, а в таблице A RelationID - D0001001 (MC DONALDS).
Не спрашивайте меня, почему RelationID в таблице A находится со странным D000 перед ним, я тоже не знаю, но у него была какая-то функциональность.
Вернемся к проблеме. Я хочу получить несколько полей из таблицы A, а также имя литерала из таблицы B, где оно соответствует значениям идентификатора таблицы A.
Вопрос в том, как я могу INNER JOIN
использовать эти 2 разных значения/типа? RelationID
в таблице A имеет строковый тип (nvarchar
, если быть точным), а в таблице B ID
, который соответствует названию отношения, является типом Integer
.
Я думал, что я мог бы исправить это:
Сделайте LIKE заявление в запросе, в котором идентификатор таблицы B (1001 целое) частично совпадает с RelationID из таблицы А (D0001001 строка). Это, однако, не работает
сделать заявление
REPLACE
, заменив значения RelationID 'D000' ничем: "". Это, вероятно, все равно потребует некоторого рода приведение в целое число для значения таблицы A. Возможно, возникла некоторая ошибка из-за синтаксической ошибки.
То, что я до сих пор:
SELECT
TableA.subject, TableA.Name, TableA.Description, TableA.Date,
TableB.RelationName
INNER JOIN
TableB ON TableA.RelationID = TableB.ID
Это возвратило преобразование, которое не представляется возможным (строка/целое).
Итак, я попробовал:
SELECT
TableA.subject, TableA.Name, TableA.Description, TableA.Date,
TableB.RelationName
INNER JOIN
TableB ON TableB.ID LIKE '% TableA.RelationID %'
Это не работает либо (EOF).
Чтобы сделать это немного понятнее мои таблицы:
Таблица A + ------------ + ----------- + - ---------------- + --------------------- + ----------- + | RelationID | Тема | Описание | Имя | Дата | + ------------ + ----------- + ------------------ + ---- ----------------- + ----------- + | D0001001 | Быстрое питание | Некоторые описания | Название заполнителя формы | 13-3-2015 | | D0001002 | Напитки | Некоторые описания | Название заполнителя формы | 10-3-2015 | | D0001003 | Автомобили | Некоторые описания | Название заполнителя формы | 7-3-2015 | + ------------ + ----------- + ------------------ + ---- ----------------- + ----------- +
Таблица B
+------+--------------+
| ID | RelationName |
+------+--------------+
| 1001 | MC DONALDS |
| 1002 | COCA COLA |
| 1003 | MERCEDES |
+------+--------------+
-> INNER присоединяется in ID и RelationID
Любые альтернативы? Заранее спасибо!
вы можете использовать конструктор 'like' – Sim1
Каким будет значение 'RelationID' после' D0009999' –