как выбрать столбец с нулевым значением и использовать идентификатор столбца, чтобы выбрать другой столбец другой таблицы - PullRequest
0 голосов
/ 18 июня 2019

рассмотреть таблицу req и ордера

CREATE TABLE `req` (
  `req_id` bigint(20) NOT NULL,
  `order_date` timestamp NULL DEFAULT NULL,
  `status` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  `order_id` bigint(20) NOT NULL,`
  PRIMARY KEY (`req_id`),
  KEY `order_id` (`order_id`),
  CONSTRAINT `req_ibfk_16` FOREIGN KEY (`order_id`) REFERENCES `order` (`order_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;


CREATE TABLE `orders` (
  `order_id` bigint(20) NOT NULL,
  `acc_id` bigint(20) DEFAULT NULL,
  `acc_name` varchar(256) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`order_id`),
  KEY `index_name` (`order_id`,`account_id`),
  CONSTRAINT `order_ibfk_1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;

"Чтобы выбрать столбец oder_id, oder_date и status, где status равен нулю значения таблицы req, и использовать идентификатор oder для выбора столбцов acc_id и acc_name таблицы заявок"?

и совместное воспроизведение их как

status , oder_id , acc_id, acc_name

SELECT status,order_date,order_id FROM req WHERE status is null;

, но у меня проблема с тем, как выбрать другой столбец таблицы с помощью идентификатора и показать их совместно

я использовал это для столбца выбора из одной таблицы

SELECT status,order_date,order_id FROM req WHERE status is null;

я ожидаю вывод столбцов выбора, указанных ниже

status, oder_id, acc_id, acc_name

1 Ответ

0 голосов
/ 18 июня 2019

Вам необходимо объединить две таблицы, используя отношения, которые у них есть В зависимости от вашей таблицы, order_id является первичным ключом 'orders' и FK 'req'

Используйте этот код:

SELECT 
    req.status , req.oder_id , orders.acc_id, orders.acc_name
FROM 
    req, orders
WHERE 
    req.order_id = orders.order_id
and
    req.status is null;

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

Дайте мне знать, если у вас есть какие-либо вопросы.

Edit: Добавление другого подхода с помощью не разделенного запятыми соединения. Вместо этого используйте полное соединение.

SELECT 
    req.status , req.oder_id , orders.acc_id, orders.acc_name
FROM 
    req 
Full Join
    orders
on 
    req.order_id = orders.order_id
WHERE 
    req.status is null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...