mySQL在同一个表中查询JOIN

时间:2010-04-07 03:34:17

标签: mysql join

表结构如下:

表:购买者列:id |组织|城市|状态

表:事件列:id | purchaser_id

我的查询:

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

我想做的,显然是从购买者表中按照他们的ID选择条目并从事件中加入。这很容易。我也可以轻松地通过另一个查询来获得具有相同组织,城市和州的其他购买者(有多个),但我想在同一个查询中完成所有操作。有没有办法可以做到这一点?

简而言之,按照他们的身份识别购买者,然后选择具有相同组织,城市和州的其他购买者。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试类似

的内容
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

子选择原始将返回原始购买者,然后通过组织,城市和州

链接到购买者

修改

更改了查询,这仍将返回重复项,但仅针对每位购买者注册的事件数。如果您希望检索 DISTINCT 购买者列表,则无法使用事件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