2014-02-06 3 views
0

Работа с PostgreSQL, я пытаюсь отфильтровать данные из таблицы, используя данные из другого. Это пример:Фильтрация таблицы с использованием значения суммы из другой таблицы

Таблица 1:

id|app|area_app 
    1| A | 4.7 
    2| A | 4.7 
    3| A | 4.7 

Таблица 2:

id|spart|area_spart 
    1| 1a | 1.2 
    1| 1b | 1.8 
    2| 2a | 2.1 
    2| 2b | 2.3 
    3| 3a | 0.6 

Я хотел бы, чтобы фильтровать вторая таблица выбора строки (с тем же идентификатором первой таблицы) чья сумма area_spart равна area_app первой таблицы; В этом примере результирующая таблица должна быть:

id|spart|area_spart 
    1| 1b | 1.8 
    2| 2b | 2.3 
    3| 3a | 0.6 

Итого area_spart = area_APP = 4,7

Спасибо за все!

+0

Таблица 1 'id' существует в таблице 2 ??? Где??? – user2727841

+0

Да, это первый столбец таблицы2 – doktoreas

+0

Проверьте мой (@ user2727841) ответ ... – user2727841

ответ

0

Используйте INNER JOIN, если вы получаете дубликат записи с использованием таблицы этот запрос

SELECT table1.id,table2.spart,SUM(table2.area_spart) AS area_spart FROM table1 INNER JOIN table2 ON (table1.id = table2.id) GROUP BY table1.id 

Если ваш получают Ид на основе записи использовать этот один

SELECT table1.id,table2.spart,SUM(table2.area_spart) AS area_spart FROM table1 INNER JOIN table2 ON (table1.id = table2.id) WHERE table1.id = 'your_id' 

если ваша запись не основывается на ид и хотите получить только одну запись, попробуйте этот вариант с LIMIT

SELECT table1.id,table2.spart,SUM(table2.area_spart) AS area_spart FROM table1 INNER JOIN table2 ON (table1.id = table2.id) LIMIT 1 
Смежные вопросы