Using MySQL: 4.23.46
 
The select query below returns a grouped list of all featured artists. Their images 
are listed in a random order within each artist group.
 
Is it possible to still return *all* featured artists (there are 6) but only a random 
selection of no greater than 2 images from each artist?  i.e. 11 records would be 
returned from the sample data below.
 
SELECT  artists.id, artists.artistname, artists.featured, images.imagename 
FROM (images INNER JOIN artists ON artists.id=images.artist_id) 
WHERE artists.featured = 'Y' 
ORDER BY artists.artistname, rand();
 
Selects all artists where featured equals 'Y' and their associated images in random 
order, but does not limit to 2.
 
Output:

+----+------------------+----------+-------------------+
| id | artistname | featured | imagename         |
+----+------------------+----------+-------------------+
|  2 | Name2  | Y        | hanc_port 130.jpg |
|  3 | Name3  | Y        | jdgulls_01.jpg    |
|  3 | Name3  | Y        | jdmaltesep_lg.jpg |
|  5 | Name5  | Y        | mf01_lg.jpg       |
|  5 | Name5  | Y        | mf02_lg.jpg       |
|  1 | Name1  | Y        | orsborn_08.jpg    |
|  1 | Name1  | Y        | orsborn_02.jpg    |
|  1 | Name1  | Y        | orsborn_07.jpg    |
|  1 | Name1  | Y        | orsborn_06.jpg    |
|  1 | Name1  | Y        | orsborn_05.jpg    |
|  1 | Name1  | Y        | orsborn_03.jpg    |
|  1 | Name1  | Y        | orsborn_01.jpg    |
|  1 | Name1  | Y        | orsborn_10.jpg    |
|  1 | Name1  | Y        | orsborn_09.jpg    |
|  1 | Name1  | Y        | orsborn_04.jpg    |
|  4 | Name4  | Y        | nryan_09.jpg      |
|  4 | Name4  | Y        | nryan_07.jpg      |
|  4 | Name4  | Y        | nryan_06.jpg      |
|  4 | Name4  | Y        | nryan_03.jpg      |
|  4 | Name4  | Y        | nryan_05.jpg      |
|  4 | Name4  | Y        | nryan_08.jpg      |
|  4 | Name4  | Y        | nryan_04.jpg      |
|  4 | Name4  | Y        | nryan_02.jpg      |
|  4 | Name4  | Y        | nryan_10.jpg      |
|  4 | Name4  | Y        | nryan_01.jpg      |
|  6 | Name6  | Y        | sb_model1.jpg     |
|  6 | Name6  | Y        | sb_model2.jpg     |
+----+------------------+----------+-------------------+
 
TABLE artists
+----+-----------+--------------------+
| id | artist_id | imagename          |
+----+-----------+--------------------+
|  1 |         1 | orsborn_01.jpg     |
|  2 |         1 | orsborn_02.jpg     |
...
| 10 |         1 | orsborn_10.jpg     |
| 11 |         2 | hanc_port 130.jpg  |
| 12 |         3 | jdgulls_01.jpg     |
| 13 |         3 | jdmaltesep_lg.jpg  |
| 14 |         4 | nryan_01.jpg       |
| 15 |         4 | nryan_02.jpg       |
...
 
TABLE images
| id | artistname | featured | ... 
|  1 | Name1  | Y        | ...
|  2 | Name2  | Y        | ...
|  3 | Name3  | Y        | ...
|  4 | Name4  | Y        | ...
|  5 | Name5  | Y        | ...
 
Thanks in advance.
 
 
Greg Sloman
 
 

Reply via email to