Mysql — возвращает имя таблицы в результате запроса select

#mysql #select

#mysql #выберите

Вопрос:

Структура базы данных У меня есть база данных, которая хранит кучу информации, включая имя пользователя, пароль и другие сведения о различных типах пользователей (администратор, клиенты и т.д.) В отдельных таблицах, конечно.

И я хочу выполнить поиск по базе данных, используя имя пользователя, и вернуть имя таблицы, к которой принадлежит имя пользователя. Это скажет мне, к какому типу пользователей они относятся. Что-то вроде этого:

ВЫБЕРИТЕ имя таблицы ИЗ table1, table2,table3, ГДЕ username= thisValue

У меня нет большого опыта работы с mysql, поэтому я даже не знаю, с чего начать.

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

1. Начните с изменения структуры вашей таблицы. Имейте одну таблицу с пользовательской информацией и включите столбец для чего-то вроде «типа пользователя». (Еще лучше, таблица поиска пользовательских типов и иметь внешний ключ к этой таблице.) Как вы обнаруживаете, структуру, которую вы имеете сейчас, сложно запрашивать и поддерживать.

2. Я добавил скриншот макета базы данных для справки

Ответ №1:

Вы сказали in seperate tables of course , но на практике, вероятно, было бы лучше иметь только одну пользовательскую таблицу со role столбцом, в котором записывается роль пользователя:

 CREATE TABLE users (
    id INT NOT NULL PRIMARY KEY,
    role_id INT NOT NULL,
    FOREIGN KEY (role_id) REFERENCES roles (id)
)
 

и roles таблица:

 CREATE TABLE roles (
    id INT NOT NULL PRIMARY KEY,
    desc VARCHAR(100) NOT NULL,
    ...
)
 

При таком дизайне было бы довольно просто найти всех пользователей, которые являются, например, администраторами:

 SELECT u.*
FROM users u
INNER JOIN roles r
    ON u.role_id = r.id
WHERE
    r.desc = 'admin';
 

Этот ответ предполагает, что у данного пользователя всегда будет только одна роль. Для учета нескольких ролей мы могли бы использовать таблицу соединений между таблицами users и roles .

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

1. Проблема в том, что каждый отдельный пользователь по-разному относится к базе данных и имеет разные атрибуты. В базу данных включены следующие таблицы: Администратор, Заказчик, Организатор фестиваля, Фестиваль, Бронирование, Билет, Исполнитель и Performer_Festival. Единственными атрибутами, которые использует каждый пользователь, являются имя пользователя и пароль

2. Я добавил скриншот макета базы данных для справки

3. Эта новая информация на самом деле не изменит мой ответ.