Re: Inject rows into query resultes - Mailing list pgsql-general

From David G. Johnston
Subject Re: Inject rows into query resultes
Date
Msg-id CAKFQuwZTfqFdhBueJDO9nWg3Wb3s2PkUHvFhOMqrVwQ3aG7_Uw@mail.gmail.com
Whole thread Raw
In response to Inject rows into query resultes  (Alex Magnum <magnum11200@gmail.com>)
List pgsql-general


On Tue, Sep 22, 2015 at 6:22 PM, Alex Magnum <magnum11200@gmail.com> wrote:
Hi,
I am having a problem where I need to inject rows into a query result. That is

I have a list of add records, lets say car listings which I select from a table. The order of the results are given either by the user or default/initial.

I now want to inject featured car adds after every 5th record. (coming from the same table)

Right now, I am doing this on the PHP just calling the query twice but I am wondering if there is a way to only run one query.

​I have no clue how you expect to "run one query" AND "so the original listing should not be affected".  ​


The main problem is that 
a) i am using paging so the original listing should not be affected​​
b) the injected records should not be in the results returned for the current page.

​I have no clue what these mean since if you don't intend to show them why retrieve the feature car ads (one d) in the first place?

Any one having an idea how to solve that?


​Solving the ordering problem has a simplistic brute-force algorithm (you may need to fix off-by-one errors in the logic - but the idea holds)

SELECT *, (((row_number-1) / 5) * 10​) + ((row_number-1)) % 5) AS "rows_0_to_4_in_the_current_decade"
UNION ALL
SELECT *, ((row_number - 1) * 10) + (5) AS "row_5_in_the_current_decade"

Now you have: [0-5] [10-15] [​20-25], etc... as your "row index" where every "5" record is your injected row.

Hopefully this helps - you have provided insufficient and/or contradictory information regarding your actual problem.

David J.

pgsql-general by date:

Previous
From: Alex Magnum
Date:
Subject: Inject rows into query resultes
Next
From: Venkata Balaji N
Date:
Subject: Advise on memory usage limitation by PostgreSQL on Windows