Jump to content

Recommended Posts

I have a mySQL database with some of the tables and fields being:
CLIENT - clientid, client
MATTERS - matterid, clientid, refno, nickname
MATTERJUNACTIONS - matterid, notes, fee, actiondate
EXPENSES - expensid, matterid, expensedate, amount

A client can have many matters and each matter can have many actions and a number of expenses. I want to produce a report which has a separate row for each action or expense together with matter and client details. The report column headers would be:

clientid  | client  | refno  | nickname | actiondate  | note  | fee   | expensedate   | amount  |

I have a query:

SELECT client.clientid, client.client, matters.refno, matters.nickname, matterjuncactions. actiondate, matterjuncactions.notes, matterjuncactions.fee
FROM client INNER JOIN matters ON client.clientid=matters.clientid LEFT JOIN matterjuncactions ON matters.matterid=matterjuncactions.matterid LEFT JOIN  expenses ON matters.matterid=expenses.matterid 
WHERE client.clientid = 238

This produces a report with a number of rows but doesn't separate the rows with expenses on a different row to the actions. I get something like:

238  | ABC Ltd  | 1245   | matternickname | 2018/4/1   | this is the action note   | 50   | 2018/4/15   | 25   |

Rather than
238  | ABC Ltd  | 1245   | matternickname | 2018/4/1   | this is the action note   |          |                       |          | 

238  | ABC Ltd  | 1245   | matternickname |                      |                                         | 50     | 2018/4/15   | 25   |

What am I doing wrong?

Edited by gabucknall

Your query selection does not include any columns from the expenses table, so it's strange that it outputs them. Magic maybe.

If you want the actions and expenses on separate lines, why does your required output have the action fee on the expense line?

2 minutes ago, Barand said:

Your query selection does not include any columns from the expenses table, so it's strange that it outputs them. Magic maybe.

If you want the actions and expenses on separate lines, why does your required output have the action fee on the expense line?

Sorry - I copied the wrong piece of text. The query should be:

SELECT client.clientid, client.client, matters.refno, matters.nickname, matterjuncactions. actiondate, matterjuncactions.notes, matterjuncactions.fee
FROM client INNER JOIN matters ON client.clientid=matters.clientid LEFT JOIN matterjuncactions ON matters.matterid=matterjuncactions.matterid LEFT JOIN  expenses ON matters.matterid=expenses.matterid 
WHERE client.clientid = 238

What I was saying was that I want the actions and expenses on separate lines from one query but they appear together.

13 minutes ago, Barand said:

Your query selection does not include any columns from the expenses table

And it still doesn't

9 minutes ago, gabucknall said:

SELECT client.clientid, client.client, matters.refno, matters.nickname, matterjuncactions. actiondate, matterjuncactions.notes, matterjuncactions.fee

 

7 minutes ago, Barand said:

And it still doesn't

 

SELECT client.clientid, client.client, matters.refno, matters.nickname, matterjuncactions. actiondate, matterjuncactions.notes, matterjuncactions.fee
FROM client INNER JOIN matters ON client.clientid=matters.clientid LEFT JOIN matterjuncactions ON matters.matterid=matterjuncactions.matterid LEFT JOIN  expenses ON matters.matterid=expenses.matterid 
WHERE client.clientid = 238

It was there but needed scrolling right. Have removed the code tags fromat so it's all viewable.

SELECT client.clientid, client.client, matters.refno, matters.nickname, matterjuncactions. actiondate, matterjuncactions.notes, matterjuncactions.fee
FROM client INNER JOIN matters ON client.clientid=matters.clientid LEFT JOIN matterjuncactions ON matters.matterid=matterjuncactions.matterid LEFT JOIN  expenses ON matters.matterid=expenses.matterid 
WHERE client.clientid = 238

Edited by gabucknall

I know you joined to the expenses table.

The point I was making (yet again) is that you do not select any columns from that table. Your select clause only has columns from client, matters and matterjunactions table.

Anyway, so you don't waste any more time by posting a query that could not possible produce the results that you claim, here is the query you probably need

SELECT c.clientid
     , c.client
     , m.refno
     , m.nickname
     , ae.actiondate
     , ae.notes
     , ae.fee
     , ae.expensedate
     , ae.amount
FROM client c
     INNER JOIN 
     matters m ON c.clientid = m.clientid 
     LEFT JOIN (
                SELECT matterid
                     , actiondate
                     , notes
                     , fee
                     , null as expensedate
                     , null as amount
                     , 'A' as type
                FROM matterjunactions
                UNION ALL
                SELECT matterid
                     , null
                     , null
                     , null
                     , expensedate
                     , amount
                     , 'E' 
                FROM expenses
                ) ae ON m.matterid = ae.matterid
WHERE c.clientid = 238
ORDER BY m.matterid, type, COALESCE (actiondate, expensedate);

+----------+----------+-------+----------+------------+------------------+------+-------------+--------+
| clientid | client   | refno | nickname | actiondate | notes            | fee  | expensedate | amount |
+----------+----------+-------+----------+------------+------------------+------+-------------+--------+
|      238 | Client A | A123  | Nick 123 | 2018-03-01 | This is a note 1 |  200 |             |        |
|      238 | Client A | A123  | Nick 123 | 2018-03-02 | This is a note 2 |  150 |             |        |
|      238 | Client A | A123  | Nick 123 | 2018-03-03 | This is a note 3 |  100 |             |        |
|      238 | Client A | A123  | Nick 123 | 2018-03-04 | This is a note 7 |  200 |             |        |
|      238 | Client A | A123  | Nick 123 | 2018-03-05 | This is a note 8 |  150 |             |        |
|      238 | Client A | A123  | Nick 123 | 2018-03-06 | This is a note 9 |  100 |             |        |
|      238 | Client A | A123  | Nick 123 |            |                  |      | 2018-03-01  |    100 |
|      238 | Client A | A123  | Nick 123 |            |                  |      | 2018-03-02  |    500 |
|      238 | Client A | A125  | Nick 125 | 2018-03-01 | This is a note 10|  200 |             |        |
|      238 | Client A | A125  | Nick 125 | 2018-03-03 | This is a note 13|  100 |             |        |
|      238 | Client A | A125  | Nick 125 |            |                  |      | 2018-03-01  |    300 |
|      238 | Client A | A125  | Nick 125 |            |                  |      | 2018-03-02  |    250 |
|      238 | Client A | A126  | Nick 126 | 2018-03-02 | This is a note 12|  150 |             |        |
|      238 | Client A | A126  | Nick 126 |            |                  |      | 2018-03-01  |    150 |
|      238 | Client A | A126  | Nick 126 |            |                  |      | 2018-03-02  |    500 |
+----------+----------+-------+----------+------------+------------------+------+-------------+--------+

 

  • Like 1
This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.