#mysql #select
#mysql #выберите
Вопрос:
У меня есть 2 таблицы:
- Пользователи
- Задачи
у каждого Task
есть столбец с firstname lastname
user
сохраненным в нем. Однако я не думаю, что это очень хорошее решение. Что, я думаю, было бы намного лучше, так это сохранение id
user
into Tasks
.
Проблема в том, что я могу легко это сделать, но как мне использовать SELECT
query?
Мне понадобится какой-то запрос, который будет SELECT
содержать все строки, Tasks
и когда это будет сделано, выполните последовательность запросов, которые заменяют каждый идентификатор пользователя его / ее именем и фамилией для целей отображения.
Проблема в том, что я понятия не имею, как будет выглядеть этот запрос.
Комментарии:
1. Вам нужно использовать join в вашем запросе.
2. @ChetanRanpariya как бы я использовал такой запрос, если я делаю
SELECT * FROM 'Tasks'
?3. Вам нужно изменить запрос, чтобы выполнить соединение с пользовательской таблицей. Что-то вроде
SELECT t.*, CONCAT(u.firstname, ' ', u.lastname) FROM Tasks t JOIN Users u ON t.userid = u.id
Я также предлагаю вам прочитать больше о join в MySQL.4. @ChetanRanpariya Я смог его выполнить, однако то, что он в основном делает, это просто добавляет еще один столбец с результатом CONCAT. Однако, что мне действительно нужно, так это результат
t.userid
, который нужно заменить наu.id
5. Молодежи нужно выбирать отдельные столбцы таблицы задач и не включать в нее столбец userid.
SELECT t.col1,t.col2, t.col3, CONCAT(u.firstname, ' ', u.lastname) as userid .....
Ответ №1:
Вы можете создать представление, определенное так, как вы хотите, затем вы можете выбрать * из представления.
Итак, что-то вроде (stack — это имя моей базы данных)
create view stack.taskAndUser as
select concat(u.firstName, ' ', u.lastName) as userName, t.*
from stack.user u join stack.task t on t.user = u.id;
Затем вы можете выполнить поиск
select * from stack.taskAndUser;
Это будет включать идентификатор пользователя, сохраняемый в task, вы можете изменить свое представление, чтобы опустить его, но вам придется написать более подробный оператор select при создании представления вместо select *.