DROP TABLE IF EXISTS messages;
CREATE TABLE messages( message text, reference char(10), sender char(10));
INSERT INTO MESSAGES VALUES
('message1 text' , '000005' , 'M000001'),
('message2 text' , '000010' , 'M000015'),
('message3 text' , '000005' , 'M000004'),
('message4 text' , '000005' , 'M000001');
DROP TABLE IF EXISTS senders;
CREATE TABLE senders( memberid char(10), name char(20) );
INSERT INTO SENDERS VALUES
('M000001' , 'Mr Smith' ),
('M000002' , 'Mr Jones' ),
('M000003' , 'Mrs Thomson' ),
('M000004' , 'Mrs Harisson' );
SELECT m.message, m.reference, s.name
FROM messages m
JOIN senders s ON m.sender=s.memberid
WHERE m.reference='000005';
+---------------+-----------+--------------+
| message | reference | name |
+---------------+-----------+--------------+
| message1 text | 000005 | Mr Smith |
| message4 text | 000005 | Mr Smith |
| message3 text | 000005 | Mrs Harisson |
+---------------+-----------+--------------+
PB
-----
Richard wrote:
> Hi
> My guess is I have not described my problem well enough then ...
>
> Here is an example of table one :
>
> MESSAGE | REFERENCE | SENDER
> ----------------------------------------------------
> message1 text | 000005 | M000001
> message2 text | 000010 | M000015
> message3 text | 000005 | M000004
> message4 text | 000005 | M000001
>
> And of table 2 :
>
> MEMBERID | NAME
> ----------------------------------
> M000001 | Mr Smith
> M000002 | Mr Jones
> M000003 | Mrs Thomson
> M000004 | Mrs Harisson
>
>
> So I need the query to give me :
>
> for $reference=000005
>
> The following array :
>
> MESSAGE | NAME
> ---------------------------------------
> "message1 text" | "Mr Smith"
> "message3 text | "Mrs Harrison"
> "message4 text" | "Mr Smith"
>
> Is this clearer ?
>
> Thanks :)
>
>
> Peter Brawley a écrit :
>> Richard,
>>
>> This is elementary---you most definitely do not need to do it with
>> PHP code. Given tables messages(senderid, message, reference) and
>> senders(senderid, name, address), this query
>>
>> SELECT m.message, m.reference, s.name
>> FROM messages m
>> JOIN senders s ON m.senderid=s.senderid
>> WHERE m.reference='$reference';
>>
>> retrieves what you say you want. If it "does not work", there is a
>> mistake in the description of the problem.
>>
>> PB
>>
>> -----
>>
>> Richard wrote:
>>> I've tried it and it does not work,
>>>
>>> the problem is that there needs to be 1 table1 row for each table2
>>> row, and table 1 is the message list and the table two is the
>>> members information list.
>>>
>>> So I need the same row to be joined to all the message rows with the
>>> same senderid ...
>>>
>>> I guess I will have to manage this with the php code and not get the
>>> result directly from the sql query; thanks anyway !
>>>
>>> Peter Brawley a écrit :
>>>> That query will give one row per table1 row matching your WHERE
>>>> clause, with matched row from table2. Is that what you want?
>>>>
>>>> PB
>>>>
>>>> Richard wrote:
>>>>> Thanks,
>>>>> I think I have found the correct syntax in a book I've got :
>>>>>
>>>>> SELECT A.message,B.name
>>>>> FROM table1 A
>>>>> JOIN table2 B ON A.senderid=B.senderid
>>>>> WHERE A.reference="$reference";
>>>>>
>>>>> I am just about to test this code, however I've now got doubts
>>>>> that this will work as table1 contains more than one row with
>>>>> eache userid whereas table two only contains one.... (table one is
>>>>> the messages and table2 contains user information.
>>>>>
>>>>> could this work or should I try another aproach?
>>>>>
>>>>> Thanks :)
>>>>>
>>>>> Richard
>>>>>
>>>>> Peter Brawley a écrit :
>>>>>> Richard,
>>>>>>
>>>>>> In ...
>>>>>>
>>>>>> SELECT t1.message, t1.reference, t2.name
>>>>>> FROM tbl1 t1
>>>>>> JOIN tbl2 ON t1.senderid=t2.senderid
>>>>>> WHERE t1.reference = '$reference';
>>>>>>
>>>>>> t1 and t2 are table aliases used to simplify table references.
>>>>>>
>>>>>> The comma join syntax you cite will sometimes work, and sometimes
>
>>>>>> will not. It's not sufficiently reliable for general use.
>>>>>> Explicit join syntax is therefore always preferred.
>>>>>>
>>>>>> The WHERE clause cannot precede the JOIN clause.
>>>>>>
>>>>>> PB
>>>>>>
>>>>>> -----
>>>>>>
>>>>>> Richard wrote:
>>>>>>> Yes that looks like what I am looking for.
>>>>>>>
>>>>>>> could you explain what "FROM tabl1 t1" means ...I've seen
> "FROM
>>>>>>> tbl1,tbl2" before but I haven't come accross seperation with
> a
>>>>>>> space yet ...
>>>>>>>
>>>>>>> I didn't explain everything I guess what I am looking for is
> :
>>>>>>>
>>>>>>> SELECT t1.message,t2.name
>>>>>>> FROM tbl1 t1
>>>>>>> WHERE t1.reference='$reference'
>>>>>>> JOIN tbl2 ON t1.senderid=t2.senderid;
>>>>>>>
>>>>>>>
>>>>>>> But I don't quite understand the t1. or the t2. is it just a
> way
>>>>>>> to make it more understandable?
>>>>>>>
>>>>>>> Could I do :
>>>>>>>
>>>>>>> SELECT message,name
>>>>>>> FROM table1
>>>>>>> WHERE reference='$reference'
>>>>>>> JOIN table2 ON senderid=senderid2;
>>>>>>>
>>>>>>> if this is wrong then I don't understand why there is no
>>>>>>> reference to t2 in your code ("FROM tbl1 t1" but nothing for
> t2)
>>>>>>>
>>>>>>> Sorry about these questions, I'm beginning with mysql !
>>>>>>>
>>>>>>> Peter Brawley a écrit :
>>>>>>>> Richard
>>>>>>>>
>>>>>>>> >I have table1 containing : message, senderid,
> reference
>>>>>>>> >and table2 contains: senderid, name, address
>>>>>>>> >I want to do a query that gives me : message,
> reference and
>>>>>>>> name ...
>>>>>>>>
>>>>>>>> Do you mean ...
>>>>>>>>
>>>>>>>> SELECT t1.message, t1.reference, t2.name
>>>>>>>> FROM tbl1 t1
>>>>>>>> JOIN tbl2 ON t1.senderid=t2.senderid;
>>>>>>>>
>>>>>>>> PB
>>>>>>>>
>>>>>>>> -----
>>>>>>>>
>>>>>>>> Richard wrote:
>>>>>>>>> Hello, I'm not sure if I can use union here or what
> syntax I
>>>>>>>>> should use. I will simplify the tables to only
> include the
>>>>>>>>> necessary information.
>>>>>>>>>
>>>>>>>>> I have table1 containing : message, senderid,
> reference
>>>>>>>>> and table2 contains: senderid, name, address
>>>>>>>>>
>>>>>>>>> I want to do a query that gives me : message,
> reference and
>>>>>>>>> name ...
>>>>>>>>>
>>>>>>>>> Is this possible with one query?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks !
>>>>>>>>>
>>>>>>>>> Richard
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>
>
>