[英]MySQL - How to select all results from a table based on the relation between two different tables?
我有三个表: Inquery 、 Operator和Operator_Region 。
表中输入的数据如下:
每个运营商可以有一个或多个区域。 我需要显示INQUIRY表的所有结果,这些结果的Region字段等于登录用户的( Operator ) Operator_Region.regionName 字段。 见下图:
我正在尝试如下:
SELECT region FROM `INQUIRY`
INNER JOIN `OPERATOR` on `INQUIRY`.`region` WHERE `INQUIRY`.`region` IN (
SELECT
regionName
FROM
`OperatorRegion`
INNER JOIN `Operator` ON `OperatorRegion`.`OperatorID` = operatorID
WHERE
operatorRegion.operatorID = 2)
我需要查询仅返回与登录操作员区域匹配的 INQUIRY 表行(在本例中为 Alisson)。 运营商区域位于“运营商 region_table”中。
却空空而归。 这是我的SQLFiddle
考虑以下:
DROP TABLE IF EXISTS inquiry;
CREATE TABLE inquiry
(inquiry_id SERIAL PRIMARY KEY
,region VARCHAR(12)
);
INSERT INTO inquiry VALUES
(1,'Hawaii'),
(2,'Hawaii'),
(3,'Paris'),
(4,'New York');
DROP TABLE IF EXISTS operator;
CREATE TABLE operator
(operator_id SERIAL PRIMARY KEY
,operator_name VARCHAR(12) NOT NULL UNIQUE
);
INSERT INTO operator VALUES
(101,'John'),
(102,'Alisson'),
(103,'Peter');
DROP TABLE IF EXISTS operator_region;
CREATE TABLE operator_region
(operator_id INT NOT NULL
,region VARCHAR(12) NOT NULL
,PRIMARY KEY (operator_id,region)
);
INSERT INTO operator_region (operator_id,region)
VALUES (102,'New York'),
(102,'Los Angeles'),
(102,'Hawaii'),
(101,'New York'),
(103,'Paris');
SELECT i.*
FROM inquiry i
JOIN operator_region ro
ON ro.region = i.region
JOIN operator o
ON o.operator_id = ro.operator_id
WHERE o.operator_name = 'Alisson';
+------------+----------+
| inquiry_id | region |
+------------+----------+
| 1 | Hawaii |
| 2 | Hawaii |
| 4 | New York |
+------------+----------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.