MySQL ПРИСОЕДИНЯЙТЕСЬ к использованию подстроки из одной таблицы - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь объединить две таблицы в MySQL. Мне нужно объединиться на основе полной строки из одного поля (Таблица a: ID) и подстроки из другой таблицы (Таблица b: caseID). Макет структуры таблицы можно увидеть в нижней части этого поста. ID и caseID определены как уникальные.

Вывод, который я ищу, похож на:

|-------------|--------------|------------|
|      ID     |     name     |     age    |
|-------------|--------------|------------|
|      1      |     Bob      |     22     |
|      2      |     Bill     |     23     |
|      3      |     Ben      |     24     |
|-------------|--------------|------------|

Я знаю, как извлечь подстроку на основе разделителя:

SELECT SUBSTRING(caseID, LOCATE('-', caseID)+1, LENGTH(caseID)) AS ExtractString FROM b

но мне неясно, как объединить это с обычным оператором SQL JOIN для возврата всех объединенных записей. Я все время получаю сообщение об ошибке типа «возвращает более одной строки».

Любая помощь очень ценится.

Таблица a:

|-------------|--------------|
|      ID     |     name     |
|-------------|--------------|
|      1      |     Bob      |
|      2      |     Bill     |
|      3      |     Ben      |
|-------------|--------------|

Таблица b:

|-------------|--------------|
|   caseID    |     age      |
|-------------|--------------|
|    24-1     |     22       |
|    24-2     |     23       |
|    24-3     |     24       |
|-------------|--------------|

Ответы [ 3 ]

1 голос
/ 26 марта 2020
SELECT * 
FROM a 
JOIN b ON a.ID = SUBSTRING_INDEX(b.caseID, '-', -1)
1 голос
/ 26 марта 2020

ВЫБРАТЬ * ИЗ ЛЕВОГО СОЕДИНЕНИЯ b НА a.ID = SUBSTRING (b.caseID, LOCATE ('-', b.caseID) +1, LENGTH (b.caseID))

0 голосов
/ 26 марта 2020

Как правило, как только я задаю вопрос, я вырабатываю ответ!

SELECT a.*, b.*
FROM a
JOIN b
ON b.id = SUBSTRING(a.caseID, LOCATE('-', a.caseID)+1, LENGTH(a.caseID))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...