У меня есть две таблицы:
пользователи
user_id INT(11) PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(45) NOT NULL,
user_pass VARCHAR(255) NOT NULL,
user_mail VARCHAR(100) NOT NULL,
user_dpto VARCHAR(100) NOT NULL,
user_resp BOOLEAN NOT NULL,
token VARCHAR(100)
заботы
sol_id INT(11) PRIMARY KEY AUTO_INCREMENT,
random_number INT(11) NOT NULL,
asunto VARCHAR(45) NOT NULL,
emision_date DATETIME NOT NULL,
state VARCHAR(45) NOT NULL,
state_date DATETIME NOT NULL,
tercero BOOLEAN NOT NULL,
nombre_tercero VARCHAR(100),
fecha_solicitud_tercero DATE,
fecha_limite DATE
И users_solicitudes
user_id INT(11),
sol_id INT(11),
rol BOOLEAN,
PRIMARY KEY (user_id, sol_id)
В этой последней таблице роль равна 0, если человек сделал запрос, или 1, если это человек, который его принял.
Запросы (запросы) — это запросы, сделанные в определенный отдел (в данном случае отдел поддержки). Я делаю панель инструментов, где администратор может видеть все «заботы», где он показывает человека, который сделал запрос, и человека, который принял этот запрос (последним может быть более одного человека).
Проблема в том, что я не могу найти способ сделать запрос, чтобы показать в одной строке человека, который сделал запрос, и человека, который его принял (самый простой случай). В итоге таблица должна быть примерно такой:
user_who_made_request|asunto|user_who_took_it|state|state_date
Я просмотрел другие ответы, но не могу получить желаемый результат. Может быть проще, чем я думаю. Буду признателен за любую помощь.
Вы можете изменить таблицу users_solicitudes, чтобы у вас были request_user_id и take_user_id. После этого очень просто манипулировать данными как хотите
Что такое sol_id в таблице users_solicitudes?
Я бы сохранил пользователя, который настроил заботу/сделал запрос, в таблице тот "заботливость", так как там может быть только один. Тогда бы у вас вообще не было бы проблем. (Теперь вы сохраняете отношение 1:1 в дополнительной таблице, смешанное с отношением 1:n)






попробуйте так:
CREATE TABLE users (
user_id INT(11) PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(45) NOT NULL,
user_pass VARCHAR(255) NOT NULL,
user_mail VARCHAR(100) NOT NULL,
user_dpto VARCHAR(100) NOT NULL,
user_resp BOOLEAN NOT NULL,
token VARCHAR(100)
);
CREATE TABLE solicitudes (
sol_id INT(11) PRIMARY KEY AUTO_INCREMENT,
random_number INT(11) NOT NULL,
asunto VARCHAR(45) NOT NULL,
emision_date DATETIME NOT NULL,
state VARCHAR(45) NOT NULL,
state_date DATETIME NOT NULL,
tercero BOOLEAN NOT NULL,
nombre_tercero VARCHAR(100),
fecha_solicitud_tercero DATE,
fecha_limite DATE
);
CREATE TABLE user_solicitudes(
us_id INT AUTO_INCREMENT PRIMARY KEY,
req_user_id INT(11),
took_user_id INT(11),
sol_id INT(11),
rol BOOLEAN
);
Если только один пользователь на запрос может сделать этот запрос, нет необходимости хранить его в дополнительной таблице. Сохраните дополнительную таблицу для пользователей, которые брать запрос.
Я бы устранил вашу проблему при настройке таблиц таким образом:
CREATE TABLE solicitudes (
sol_id INT(11) PRIMARY KEY AUTO_INCREMENT,
user_id INT(11) NOT NULL, // the user who makes that request
random_number INT(11) NOT NULL,
asunto VARCHAR(45) NOT NULL,
emision_date DATETIME NOT NULL,
state VARCHAR(45) NOT NULL,
state_date DATETIME NOT NULL,
tercero BOOLEAN NOT NULL,
nombre_tercero VARCHAR(100),
fecha_solicitud_tercero DATE,
fecha_limite DATE
);
CREATE TABLE user_solicitudes(
user_id INT(11),
sol_id INT(11)
// rol BOOLEAN - no need for the role field anymore, as you'd only store those who took the request here.
);
Вы можете присоединяться к одной и той же таблице несколько раз, используя псевдонимы. Что у вас есть до сих пор?