代码之家  ›  专栏  ›  技术社区  ›  jay

同一表中的mysql查询连接

  •  1
  • jay  · 技术社区  · 14 年前

    表结构如下:

    表:采购员 列:id组织城市州

    表:事件 列:id买方id

    我的疑问是:

    SELECT purchasers.*, events.id AS event_id 
    FROM purchasers 
    INNER JOIN events ON events.purchaser_id = purchasers.id 
    WHERE purchasers.id = '$id'
    

    我想做的,显然是从purchers表中按id选择条目并从事件中加入。这是最简单的部分。我也可以很容易地进行另一个查询,以获得具有相同组织、城市和州(有多个)的其他采购商,但我想在同一个查询中完成这一切。有办法吗?

    简而言之,通过他们的ID抓取购买者,但同时也选择具有相同组织、城市和州的其他购买者。

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Adriaan Stander    14 年前

    你可以试试

    SELECT  p.*, 
             e.id
    FROM    purchasers p  INNER JOIN 
            events e ON e.purchaser_id = p.id  INNER JOIN
            (
                SELECT  p.*
                FROM    purchasers p
                WHERE   p.id = '$id'
            ) Original  ON  p.organization = Original.organization
                        AND p.city = Original.city
                        AND p.state = Original.state
    

    子选举 原件 将返回原始购买者,然后链接到 购买者 表由 组织、城市和州

    编辑:

    更改查询后,仍将返回重复项,但仅针对每个购买者注册的事件数。如果您想检索 独特的 买家名单,你不能用 事件ID ,所以你需要

    SELECT  p.*
    FROM    purchasers p  INNER JOIN 
            (
                SELECT  p.*
                FROM    purchasers p
                WHERE   p.id = '$id'
            ) Original  ON  p.organization = Original.organization
                        AND p.city = Original.city
                        AND p.state = Original.state