2015-09-29 2 views
0

У меня есть сценарий, где я соединяю три таблицы и получаю результаты.Предел для внутренней таблицы Join

Моя проблема в том, что я применил предел для объединенной таблицы.

Примите ниже пример, у меня есть три таблицы 1) книги и 2) Клиент 3) автор. Мне нужно найти список книг, продаваемых сегодня с автором и имя клиента, однако я просто нужно последние степени п клиентов не все, сдав книги Id

    Books   Customer    Authors 
       --------------- ---------------------- ------------- 
       Id Name AID  Id BID Name Date   AID Name 
       1     1 1 ABC    1 A1  
       2     2 1 CED    2 A2 
       3     3 2 DFG 

Как мы можем достичь этого?

ответ

2

Вы ищете LATERAL.

Пример:

SELECT B.Id, C.Name 
FROM Books B, 
    LATERAL (SELECT * FROM Customer WHERE B.ID=C.BID ORDER BY ID DESC LIMIT N) C 
WHERE B.ID = ANY(ids) 
    AND Date=Current_date 
+0

Спасибо Робин, мне не нравится этот подзапрос подход. Их лучший способ или это единственный способ? –

+0

Хммм ... Кстати ... вам нужна только последняя запись, или вам нужны последние N записей? –

+0

N записей, Клиент пропустит N. –

Смежные вопросы