Я бы хотел, чтобы «user_names» был списком пользователей, но я не могу получить несколько элементов подзапроса, которые будут назначены «user_names». Это работает, если подзапрос возвращает только 1 элемент, но не работает, если он возвращает несколько.SQL Concat Subquery
Кровать Таблица
[ID]
[1]
[2]
[3]
Назначение Таблица:
[ID, bed_id, идентификатор_пользователя]
[1, 1, 1 ]
[2, 1, 2]
Пользователи Таблица:
[ID, 'user_name']
[1, 'John Smith']
[2, 'Jane Doe']
sql = "SELECT
b.id,
(
SELECT
u.user_name
FROM
assignments AS a
INNER JOIN
users as u
ON
a.user_id = u.id
WHERE a.bed_id = b.id
) AS user_names
FROM beds AS b"
Желаемые результаты будут:
[1, 'Джон Смит, Джейн Доу']
[2, '']
[3, '']
Я пробовал жестко кодировать идентификатор кровати и запускать этот сегмент, чтобы получить список имен. Это не сработало:
sql = """
(
SELECT
array_agg(user_name)
FROM
roomchoice_assignment AS a
INNER JOIN
roomchoice_customuser as u
ON
a.user_id = u.id
WHERE
a.bed_id = 1
GROUP BY user_name
)"""
Он вернулся следующее:
[
[
[
"John Smith"
]
],
[
[
"Jane Doe"
]
]
]
Я надеялся на это:
['John Smith, Jane Doe']
почему бы не просто выбрать user_name из заданий? – code
Какую базу данных вы используете? Метод, используемый для конкатенации значений, различен. Скорее всего, будет дублированный вопрос, который будет решать ваш вопрос. – jpw
Пожалуйста, отредактируйте свой вопрос с образцовыми данными и желаемыми результатами. –