----- Original Message ----- From: <[EMAIL PROTECTED]>
To: "Jonathan Mangin" <[EMAIL PROTECTED]>
Cc: <mysql@lists.mysql.com>
Sent: Friday, October 07, 2005 2:09 PM
Subject: Re: Joining tables, duplicating none


"Jonathan Mangin" <[EMAIL PROTECTED]> wrote on 10/07/2005 02:57:28
PM:

I have two tables with date and uid cols. in common.
Table 1 has one row per date, Table 2 has a maximum
of 7 rows per date.

select t1.date, t1.val, t2.val from t1
right join t2 on t1.date = t2.date
where t1.date between '2005-08-01' and '2005-08-14'
and t1.uid = 'me';

+------------------------------+
| t1.date    | t1.val | t2.val |
+------------+--------+--------+
| 2005-08-01 |     92 |   18.3 |
| 2005-08-01 |     92 |   23.3 |
+------------+--------+--------+

Is there any way to get something like this

+------------------------------+--------+
| t1.date    | t1.val | t2.val | t2.val |
+------------+--------+--------+--------+
| 2005-08-01 |     92 |   18.3 |   23.3 |
+------------+--------+--------+--------+

instead of duplicating Table 1 rows for every row
in Table 2?

Thanks,
Jon


You cannot get that kind of results as distinct and separate columns. Have
you looked at the GROUP_CONCAT() function as a work around?

SELECT t1.date, t1.val, GROUP_CONCAT(t2.val)
FROM t1
RIGHT JOIN t2
       on t1.date = t2.date
where t2.date between '2005-08-01' and '2005-08-14'
       and t1.uid = 'me'
GROUP BY t1.date, t1.val;

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine

Thanks Shawn,

Interesting, but that won't work for me.
Are two separate selects my only choice?

I tried (with two different tables) including t1.id
in related records of Table 2 and ran into the same
problem.  With all the talk of normalization, I
thought this would be easier.  Am I leaving something
obvious out of the table designs?

--Jon


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to