Получение всех строк, где один столбец находится в наборе в одной и той же таблице (MySQL) - PullRequest
1 голос
/ 20 июля 2011

Итак, у меня есть таблица MySQL со следующими столбцами:

PROPERTY_ID
AGENT_ID
STATUS
SALE_DATE
SALE_PRICE
ZIP

Я хочу получить общий объем продаж для всех агентов, которые продали хотя бы одну недвижимость с данным почтовым индексом.Это означает, что если AGENT_ID Боба Смита связан хотя бы с одним свойством в ZIP 90210, то я хочу, чтобы все продажи Боба Смита были включены в общую сумму.1006 *

CREATE TEMPORARY TABLE `AGENTS` (`AGENT_ID` INT);
INSERT INTO `AGENTS` SELECT DISTINCT `AGENT_ID` FROM `PROPERTIES` WHERE ZIP = 90210;
SELECT SUM(p.`SALE_PRICE`) FROM `PROPERTIES` p, `AGENTS` a WHERE p.`AGENT_ID` = a.`AGENT_ID`;

Что мне интересно, могу ли я сделать это, не сбрасывая идентификаторы агентов во временную таблицу для присоединения?Похоже, что для этой цели можно было бы присоединиться к таблице PROPERTIES, но я не знаю, как это сделать.Любые идеи будут высоко оценены ...

Ответы [ 2 ]

2 голосов
/ 20 июля 2011
SELECT
    AGENT_ID,
    SUM(SALE_PRICE)
FROM PROPERTIES
WHERE AGENT_ID IN (SELECT AGENT_ID FROM PROPERTIES WHERE ZIP = 90210)
GROUP BY AGENT_ID;

Это даст отдельную сумму для каждого агента, который продал что-то в 90210.
Хотя ваш вопрос не говорит об этом, он предполагает, что это то, что вы хотите.

0 голосов
/ 20 июля 2011

Если я понимаю, вам на самом деле не нужен JOIN, и вы можете сделать это с помощью оператора select в предложении where.Предложение IN предоставляет вам всех агентов, которые продали что-либо в 90210, но не ограничивают результаты SUM() этими записями собственности в 90210.

SELECT SUM(SALE_PRICE) 
FROM properties
WHERE AGENT_ID IN (SELECT AGENT_ID FROM properties WHERE ZIP = 90210);

Если вы хотите суммыДля каждого отдельного агента добавьте GROUP BY:

SELECT AGENT_ID, SUM(SALE_PRICE) 
FROM properties
WHERE AGENT_ID IN (SELECT AGENT_ID FROM properties WHERE ZIP = 90210)
GROUP BY AGENT_ID;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...