[nycphp-talk] every other record

Rahmin Pavlovic rahmin at
Sun Feb 5 13:28:57 EST 2006

First of, thanks to everyone for the responses -- especially to Carlos for
the clever SQL.  (Sorry if I've missed new posts, been away for a few days.)

On 2/1/06 5:36 PM, "Adam Maccabee Trachtenberg" <adam at>

> I see many people have provided a number good of answers, so let me
> step back and ask: "What problem are you trying to solve?"

Alrighty.  Basically, we're redesigning a site that ultimately contains over
100k records (table a) that belong to over 300 sections (table b).  (Each
week, the editors will upload 50+ new records, which may or may not contain
new sections.)

The redesign is an all-CSS layout.  For the section landing page, we're
showing the 5 most recent records, followed by a two-column layout
displaying the next 30 or so.

Each 'column' is essentially a <div> block, so I want to show all even
records in the left block;  all odd records in the right.  (Editors can
choose sort-order, turn records on and off or simply display all in
reverse-cron, so accuracy is important.)  I've been playing around with SQL
to do this as I'd rather not put the weight on PHP.

(This is all working, BTW.)

> Why do you need every other row? Is this data likely to change? How
> often is it updated? Can you pre-compute an ENUM that you insert upon
> writing the table that lets you do:
> SELECT * FROM TABLE WHERE filter = 'even';
> SELECT * FROM TABLE WHERE filter = 'odd';

See above for sorting rules, but I just want to say that a pet peeve of mine
is text-entries in the db for boolean logic.  Why not something like odd=0
|| odd=1?

The legacy site we're redesigning here actually had doNotShow='yes' ||
doNotShow='no' in the db.  I banged my head on the desk when I saw this.  It
not only takes more memory to retrieve & test the results, but the logic in
this case is in reverse.  Every time I'd look at a record, I'd have to ask
myself, "Do I not want to show the record?  No, I do not want to not show

These are now display=1 || display=0.  It is far more easier to test:

if($record['display']) {}

Than it is:

if($record['doNotShow']=='no') {}

(Just had to get that off my chest..)

More information about the talk mailing list