многие ко многим запрос в MySQL - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть две таблицы:

пользователи

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_solicitude

user_id INT(11),
sol_id INT(11),
rol BOOLEAN,
PRIMARY KEY (user_id, sol_id)

В этой последней таблице rol равно 0, если лицо, сделавшее запрос, или 1, если это лицо, принявшее его.

Отношения (запросы)запросы, сделанные в конкретный отдел (отдел поддержки в данном случае).Я создаю информационную панель, где администратор может видеть все «заботы», где он показывает человека, который сделал запрос, и человека, который принял этот запрос (последний может быть больше, чем один человек).

Проблема в том, что я не могу найти способ сделать запрос, чтобы показать, в одной строке, человека, который сделал запрос, и человека, который его принял (простейший случай).В конце таблица должна выглядеть примерно так:

user_who_made_request|asunto|user_who_took_it|state|state_date

Я посмотрел другие ответы, но не смог получить желаемый результат.Может быть, проще, чем я думаю.Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Если только один пользователь на запрос может сделать этот запрос, нет необходимости хранить его в дополнительной таблице.Оставьте дополнительную таблицу для пользователей, которые принимают запрос.

Я бы устранил вашу проблему при настройке таблиц таким образом:

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.
);
0 голосов
/ 21 февраля 2019

попробуйте так:

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
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...