SQL ВЫБИРАЕТ из нескольких таблиц В СПИСКЕ

#mysql #sql #select

#mysql #sql #выберите

Вопрос:

Как я могу получить каждую статью имя всех авторов в статье (отличается от статьи к другой)

Таблица пользователей :
ИДЕНТИФИКАТОР ИМЯ FNAME
1 A AA
2 B BB
3 C CC
4 D DD

Статьи
ИДЕНТИФИКАТОР АВТОРА название
1 1,3 ty
2 4 tz

Результаты
A.id A.название Имя_пользователя Имя_пользователя
1 ty A C
2 tz D нет пользователя

Его рабочее спасибо, есть ли способ создать один пользовательский столбец вместо двух, подобных этому :

ИДЕНТИФИКАТОР НАЗВАНИЕ НАЗВАНИЕ
1 ty A, C
2 yy B, C, E

потому что иногда у нас есть более 7 авторов :/

Комментарии:

1. максимум 2 автора на статью?

2. Первым шагом будет изменение структуры вашей таблицы. Никогда, никогда, никогда не храните несколько значений в одном столбце!

Ответ №1:

Предполагается, что в статье не более 2 авторов

 select a.id, a.title, b.u1, b.u2
from articles a
join (
  select if(a.id=b.id,a.id,concat(a.id,',',b.id)) author, a.name u1, if(a.id=b.id,'no user',b.name) u2
  from users a
  join users b) b on a.author = b.author;
  

ДЕМОНСТРАЦИЯ

Комментарии:

1. Его рабочее спасибо, есть ли способ создать один пользовательский столбец вместо двух, как указано выше.

Ответ №2:

Попробуйте с этим

 SELECT A.id, A.title, A.name
FROM USERS U, ARTICLES A
WHERE U.id in (A.author)
  

Ответ №3:

использование concat() mysql для объединения имен пользователей в одном столбце.

Комментарии:

1. Хотя это может быть правильным, было бы полезно, если бы вы могли привести простой пример.