MYSQL СЛЕДУЕТ присоединиться к «НРАВИТСЯ» - PullRequest
0 голосов
/ 04 октября 2011

Я пытаюсь объединить две таблицы.Проблема в том, что в одной из таблиц есть список разделенных запятыми внутри ячейки.Мне нужно присоединиться к ячейке CSV.Используя мой пример на основе салата, я хочу, чтобы бекон присоединился к бекон, индейка и дал мне cobb_salad

   SELECT tbl_a.item, tbl_b.item, tbl_b.salad 
     FROM tbl_a
LEFT JOIN tbl_b
       ON  tbl_a.item LIKE CONCAT('%', tbl_b.item, '%')

Я попробовал примервыше и несколько других выпусков.Я понимаю, что это не будет эффективным запросом.Проблема в том, что базовый набор данных предшествует мне.К счастью, мне нужно выполнить запрос только один раз.

Expected Result
+--------+------------+
| item   |   salad    |
+--------+------------|
|  ham   | chef_salad |
| bacon  | cobb_salad |
| turkey | cobb_salad |
+---------------------+


tbl_a 
+------+
| item |
+------+
|bacon | 
| ham  | 
|turkey|
+------+  

tbl_b
+--------------+------------+
|     item     |  salad     |
+--------------+------------+
| ham          | chef_salad |
| bacon,turkey | cobb_salad |
+--------------|------------+

1 Ответ

1 голос
/ 04 октября 2011

ВНИМАНИЕ:

Я показываю в вашей БД, в ваших таблицах много space characters.Пожалуйста, попробуйте обрезать его, прежде чем вставить в вашу базу данных.Пример:
От:
ham => [space]ham[space]
Кому:
ham => [no-space]ham[no-space]
НадеждаВы понимаете, что я сказал.


Вы можете попробовать:
У меня работает:

mysql> use test;
Database changed
mysql> SELECT tbl_a.item as item_a, tbl_b.item as item_b, tbl_b.salad
    -> FROM tbl_a LEFT JOIN tbl_b 
    -> ON FIND_IN_SET(tbl_a.item, tbl_b.item);
+--------+--------------+------------+
| item_a | item_b       | salad      |
+--------+--------------+------------+
| bacon  | bacon,turkey | cobb_salad |
| ham    | ham          | chef_salad |
+--------+--------------+------------+
2 rows in set (0.00 sec)

ОБНОВЛЕНИЕ:

Вот мои таблицы:

mysql> select * from tbl_a;
+-------+
| item  |
+-------+
| bacon |
| ham   |
+-------+

И

mysql> select * from tbl_b;
+--------------+------------+
| item         | salad      |
+--------------+------------+
| bacon,turkey | cobb_salad |
| ham          | chef_salad |
+--------------+------------+
...