繁体   English   中英

MySQL - 如何根据两个不同表之间的关系从表中选择所有结果?

[英]MySQL - How to select all results from a table based on the relation between two different tables?

我有三个表: InqueryOperatorOperator_Region

桌子

表中输入的数据如下:

每个运营商可以有一个或多个区域。 我需要显示INQUIRY表的所​​有结果,这些结果的Region字段等于登录用户的( Operator ) Operator_Region.regionName 字段。 见下图:

sql选择结果

我正在尝试如下:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM