Как это сделать в MySQL? - PullRequest
       22

Как это сделать в MySQL?

0 голосов
/ 16 апреля 2010

Рассмотрим, у меня есть таблица регистрации, и есть поле prefLocationId, и оно содержит значение, подобное этому 1,2,3, 2, 1,4 и так много .... И у меня есть таблица prefLocation, которая выглядит как это

Id LocationName
1  Chennai
2  Mumbai
3  Kolkatta
4  Delhi

и я хочу выбрать запись о пользователях и показать значения вроде

Chennai,Mumbai,Kolkatta, Mumbai, Chennai,Delhi и т. Д. ...

Ответы [ 2 ]

2 голосов
/ 16 апреля 2010

Это должна быть таблица prefLocationId, а не поле и тогда вы можете выбрать что-то вроде

SELECT pref.*,group_concat(prefLocation.name) 
FROM pref, prefLocationId, prefLocation 
WHERE pref.LocationId=prefLocationId.pref and prefLocation.id=prefLocationId.location
GROUP BY pref.id
0 голосов
/ 16 апреля 2010

Я почти не хочу этого делать, но ответ есть. Только о худшем из того, что я мог себе представить. Вы должны действительно рассмотреть ответ полковника Шрапнеля и разбить ваши значения в отдельную таблицу. Но ради полноты:

  SELECT registration.*, GROUP_CONCAT(prefLocation.name) AS prefLocationNames
    FROM registration
    JOIN prefLocation ON FIND_IN_SET(prefLocation.Id, registration.prefLocationId) > 0
GROUP BY registration.id

Это будет ОЧЕНЬ медленно по сравнению с тем, что вы получите, если разделите registration.prefLocationId, потому что для этого абсолютно невозможно использовать какие-либо индексы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...