简体   繁体   English

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

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

I have three tables: Inquery , Operator and Operator_Region .我有三个表: InqueryOperatorOperator_Region

桌子

The data entered in the tables are as follows:表中输入的数据如下:

Each operator can have one or more regions.每个运营商可以有一个或多个区域。 I need to display all the results of the INQUIRY table that have the Region field equal to the logged-in user's( Operator ) Operator_Region.regionName field.我需要显示INQUIRY表的所​​有结果,这些结果的Region字段等于登录用户的( Operator ) Operator_Region.regionName 字段。 see the image below:见下图:

sql选择结果

I'm trying as follow:我正在尝试如下:

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)

I need that the query to return only the INQUIRY table rows that match to the logged in operator's region (in this case is Alisson).我需要查询仅返回与登录操作员区域匹配的 INQUIRY 表行(在本例中为 Alisson)。 The operator regions are in the "operator region_table".运营商区域位于“运营商 region_table”中。

But returning empty.却空空而归。 This is my SQLFiddle这是我的SQLFiddle

Consider the following:考虑以下:

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