У меня есть две таблицы как
CREATE TABLE texts
(
TextID int(11) unsigned,
SentenceID int(11) unsigned,
Phrase tinyint(3) unsigned,
Word varchar(255),
PRIMARY KEY(TextID,SentenceID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci
CREATE TABLE phrases
(
PhraseID int(11) unsigned NOT NULL AUTO_INCREMENT,
Phrase varchar(255),
PRIMARY KEY(PhraseID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci
Я получаю фразы из текстовой таблицы как GROUP BY
,
SELECT TRIM(GROUP_CONCAT(Word SEPARATOR ' ')) AS GroupedPhrase
FROM texts
WHERE Phrase IS NOT NULL GROUP BY TextID,SentenceID,Phrase
, но мне нужно JOIN
две таблицы, чтобы получить PhraseID
вместо Phrase
, запрос для этого:
SELECT a.TextID,a.SentenceID,b.PhraseID
FROM texts a JOIN phrases b ON TRIM(GROUP_CONCAT(a.Word SEPARATOR ' '))=b.Phrase
WHERE a.Phrase IS NOT NULL GROUP BY a.TextID,a.SentenceID,a.Phrase