从代理所在城市检索产品详细信息的SQL查询

从代理所在城市检索产品详细信息的SQL查询,sql,Sql,下面的问题是在我参加的一次考试中被问到的,但我想不出答案。 有人能帮我弄明白怎么做吗 表架构:- CUSTOMERS ------------ cid PK cname city discount AGENTS ------------ aid PK aname city percent PRODUCTS ------------ pid PK pname city quantity price ORDERS ------------ ordno

下面的问题是在我参加的一次考试中被问到的,但我想不出答案。 有人能帮我弄明白怎么做吗

表架构:-

CUSTOMERS
------------
cid       PK
cname
city
discount

AGENTS
------------
aid       PK
aname
city
percent

PRODUCTS
------------
pid       PK
pname
city
quantity
price

ORDERS
------------
ordno     PK
month
cid
aid
pid
qty
dollars
  • 获取与其中一个代理商存储在同一城市的产品的pnames和pids 这些产品是谁卖的
  • 通过代理商获得所有客户订购的产品的pids “a03”

  • 第一个问题

    首先,我们从表中选择所需的信息

    SELECT DISTINCT p.pid, p.pname 
    FROM Products AS p
    
    然后我们看看代理和产品是如何连接的,它们是通过表订单连接的 我们确实加入这个表来获取代理ID

    INNER JOIN Orders AS o ON (o.pid = p.pid)
    
    然后,我们需要获得代理数据,条件是代理城市与产品存储城市相同

    INNER JOIN Agents AS t ON (o.aid = a.aid AND p.city = a.city)
    
    然后我们得到查询

    SELECT DISTINCT p.pid, p.pname 
    FROM Products AS p
    INNER JOIN Orders AS o ON (o.pid = p.pid)
    INNER JOIN Agents AS t ON (o.aid = a.aid AND p.city = a.city)
    
    这就得到了我们需要的答案

    第二个问题

    我们再次从表中查询所需的数据

    SELECT DISTINCT p.pid
    FROM Products AS p
    INNER JOIN Orders AS o ON (o.pid = p.pid)
    INNER JOIN Agents AS t ON (o.aid = a.aid)
    WHERE a.aname = 'a03'
    
    只是添加where条件

    所有这些示例都适用于MySQL。 如果您想在哪里试验SQL查询,我建议您 也许是为了阅读和学习