#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. Эта новая информация на самом деле не изменит мой ответ.