/    Sign up×
Community /Pin to ProfileBookmark

Sorting After the Query

I have a database of catering orders. Some of the orders have refill times (1 & 2). I need to display a list of all order, including separate entries for those with refill times, in chronological order for a particular date. So if order A has 2 refill times I want to see this:

[INDENT]order A (9 am)
order B (10 am)
order C (11 am)
order A refill 1 (12 pm)
order D (1 pm)
order E (2 pm)
order A refill 2 (3 pm)
etc[/INDENT]

I am unable to figure out the query this is what I have:

[code=php]$sql1=”SELECT * FROM forms_hostess WHERE month=’$m’ AND day=’$d’ AND year=’$y’ AND cancelled!=’x’ ORDER BY starttime”;[/code]

This just shows the order once not 3 times (1 – for the order, 2 – for refill 1, 3 – for refill 2)

I am assuming that I have to have code after the fact checking for if there are refill times and reiterated the entry but I am unsure how.

to post a comment
PHP

2 Comments(s)

Copy linkTweet thisAlerts:
@ginerjmJul 08.2014 — Sounds like you have built your db incorrectly. Normalize it.

I know - you don't have a clue what normalize means. It means you don't duplicate column/field data within a record - you create a second(or third or fourth, etc.) record, or you place those items that are duplicated for a key value into a second table. So - perhaps an order for a client creates and 'order' record, but if that order needs to generate multiple actions (refills), then you create the order record with the client info (perhaps) but then you create a 'order_process' table that links to the order number but then provides the refill data for that order, which will contain at least ONE record for each order.
Copy linkTweet thisAlerts:
@NogDogJul 08.2014 — Without a better DB schema, this is all I can think of off the top of my head:
[code=php]
$sql1 = <<<EOD
(
SELECT *, starttime AS sort_time
FROM forms_hostess
WHERE month='$m' AND day='$d' AND year='$y' AND cancelled!='x'
) UNION (
SELECT *, refill_1 AS sort_time
FROM forms_hostess
WHERE month='$m' AND day='$d' AND year='$y' AND cancelled!='x' AND refill_1 IS NOT NULL
) UNION (
SELECT *, refill_2 AS sort_time
FROM forms_hostess
WHERE month='$m' AND day='$d' AND year='$y' AND cancelled!='x' AND refill_2 IS NOT NULL
)
ORDER BY sort_time
EOD;
[/code]
×

Success!

Help @beylah spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.18,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...