Я пытаюсь присоединиться к двум таблицам MYSQL со столбцами, которые содержат общую подстроку.MySQL ПРИСОЕДИНИТЬСЯ к двум таблицам, используя LIKE и подстроки
Моя первая таблица trim_table
- набор данных подстрок и его идентификатор. Каждая строка содержит идентификатор и подстроку, такую как «1717 WINTON DR».
Вторая таблица wp_prop
содержит столбец field_313
, который может содержать подстроку, найденную в первой таблице. В качестве примера значение field_313 будет «Сарджент III @ 1717 Уинтон DR»
Ниже приведен запрос, который я сформулировал, чтобы объединять обе таблицы:
SELECT *, wp_prop.id as prop_id, trim_table.id as post_id, wp_prop.field_313
as prop_name, trim_table.trim_value as post_name
FROM
(SELECT id, TRIM(SUBSTRING(post_title, LOCATE('@', post_title)+1)) as trim_value
FROM wp_nd333j_posts WHERE post_type="fplan") as trim_table
JOIN
wp_nd333j_wpl_properties as wp_prop
ON trim_table.trim_value LIKE CONCAT('%', wp_prop.field_313, '%')
К сожалению, запрос не возвращает ни одной строки. Я разложил запрос на разные части, чтобы убедиться, что они работают.
Он уверен, что подстрока набор данных возвращает правильные строки, выполнив следующий запрос:
SELECT * FROM
(SELECT id, TRIM(SUBSTRING(post_title, LOCATE('@', post_title)+1)) as trim_value FROM wp_nd333j_posts WHERE post_type="fplan") as trim_table
Я также могу подтвердить, что моя wp_prop
таблица содержит подстроку, подобный пример, который я написал выше, выполнив следующие запрос:
SELECT * FROM wp_nd333j_wpl_properties as wp_prop WHERE field_313 LIKE "%1717 WINTON DR%"
Я также проверил, что мой подстрока набор данных содержит нужный мне подстроку, выполнив запрос:
SELECT * FROM
(SELECT id, TRIM(SUBSTRING(post_title, LOCATE('@', post_title)+1)) as trim_value FROM wp_nd333j_posts WHERE post_type="fplan") as trim_table
WHERE trim_value = "1717 WINTON DR"
ха-ха, не могу поверить, что я пропустил это. Огромное спасибо! –