2012-11-21 37 views
1

的第一個孩子,我有以下結構:MySQL的,包括父母

專輯

+----------+----------------------+-------------------+-------------------+--------+ 
| id_album | description   | name    | url    | status | 
+----------+----------------------+-------------------+-------------------+--------+ 
|  1 | el primer album  | primer album  | primer-album  |  1 | 
|  2 | El album del viernes | album del viernes | album-del-viernes |  1 | 
|  3 | dasdas    | album 3   | album    |  1 | 
+----------+----------------------+-------------------+-------------------+--------+ 

照片

+----------+-------------+-----------------------------+-------+---------+ 
| id_photo | description | image   | album | published   | 
+----------+-------------+-----------------------------+-------+---------+ 
|  1 |    | 1_1361894_n.jpg |  1 | 2012-05-24 13:36:36 | 
|  2 |    | 1_537885_n.jpg |  1 | 2012-05-24 13:36:39 | 
|  3 |    | 17227078_n.jpg |  1 | 2012-05-24 13:36:40 | 
|  4 |    | _6891390_n.jpg |  1 | 2012-05-24 13:36:40 | 
|  5 |    | 15743568_n.jpg |  1 | 2012-05-24 13:36:44 | 
|  6 |    | -sol.jpg  |  2 | 2012-06-29 09:55:23 | 
|  9 |    | fondo2.gif  |  2 | 2012-08-13 16:46:10 | 
|  8 |    | barra.gif  |  1 | 2012-07-10 12:13:04 | 
+----------+-------------+-----------------+-------+---------------------+ 

事實上,我選擇所有包含至少一張照片的相冊:

SELECT a.id_album, a.name, count(p.id_photo) AS photos 
FROM album a 
LEFT JOIN photo p ON a.id_album = p.album 
GROUP BY a.id_album 
HAVING photos > 0; 

+----------+-------------------+--------+ 
| id_album | name    | photos | 
+----------+-------------------+--------+ 
|  1 | primer album  |  6 | 
|  2 | album del viernes |  2 | 
+----------+-------------------+--------+ 

這裏的每一個都很好。但是現在,我想知道是否可以將每張專輯的一張 照片添加到該行中。對於的exaple:

| id_album | name | photos | id_photo | image | 

看上面我已經包括id_photoimage照片表。但我不知道如何觸發一個sql來獲得這個結果。我讚賞你的幫助。

回答

3
SELECT a.id_album, a.name, count(p.id_photo) AS photos, p.id_photo, p.image 
FROM album a 
LEFT JOIN photo p ON a.id_album = p.album 
GROUP BY a.id_album 
HAVING photos > 0; 

如果它有任何照片,很可能會插入第一張插入的相冊的照片。

+0

花了我像20分鐘寫的問題,你得到它的工作在一分鐘內 – manix

+1

你提的問題是非常明確的:) – aykut

2
SELECT a.*, b.*, c.totalCount 
FROM Album a 
     INNER JOIN Photo b 
      ON a.id_album = b.album 
     INNER JOIN 
     (
      SELECT album, 
        MAX(published) maxDate, 
        COUNT(*) totalCount 
      FROM Photo 
      GROUP BY album 
     ) c ON b.album = c.album AND 
       b.published = c.maxDate 
WHERE c.totalCount > 1 
+0

我客人,這定購照片按日期,對吧? – manix

+0

它獲取每張專輯的最新照片。 –