2011-04-10 4 views
0

도움이 필요 나는 노래의 테이블을 가지고 ... 일부 곡은 앨범의 노래, 일부는 싱글입니다 ... 는 그리고 앨범의 테이블이는 PHP와 MySQL

예 :

+--------+---------+-----------+----------------+---------+---------------+-------+--------+--------+------+-------+-------+----------+ 
| Row ID | Song ID | Album ID | Song Name | Band | Date Released | Genre | Lyrics | Lenght | Size | Plays | Likes | Dislikes | 
+--------+---------+-----------+----------------+---------+---------------+-------+--------+--------+------+-------+-------+----------+ 
| 1 | Song-01 | Album-1 | Song-001 | Band-1 | 2010-12-15 | Rock | ... | 4:30 | 4 MB | 101 | 11 | 1  | 
| 2 | Song-02 | Album-1 | Song-002 | Band-1 | 2010-12-15 | Rock | ... | 5:30 | 5 MB | 102 | 12 | 2  | 
| 3 | Song-03 | Album-1 | Song-003 | Band-1 | 2010-12-15 | Rock | ... | 3:30 | 3 MB | 103 | 13 | 3  | 
| 4 | Song-04 | [null] | Song-004 | Band-1 | 2010-12-16 | Rock | ... | 4:30 | 4 MB | 104 | 14 | 4  | 
| 5 | Song-05 | Album-2 | Song-005 | Band-1 | 2010-12-17 | POP | ... | 3:30 | 3 MB | 105 | 15 | 5  | 
| 6 | Song-06 | Album-2 | Song-006 | Band-1 | 2010-12-17 | RAP | ... | 5:30 | 5 MB | 106 | 16 | 6  | 
| 7 | Song-07 | [null] | Song-007 | Band-2 | 2010-12-17 | Rock | ... | 3:30 | 3 MB | 107 | 17 | 7  | 
| 8 | Song-08 | Album-3 | Song-008 | Band-2 | 2010-12-17 | Rock | ... | 4:30 | 4 MB | 108 | 18 | 8  | 
| 9 | Song-09 | Album-3 | Song-009 | Band-2 | 2010-12-17 | POP | ... | 5:30 | 5 MB | 109 | 19 | 9  | 
| 10 | Song-10 | Album-3 | Song-010 | Band-2 | 2010-12-17 | Punk | ... | 6:30 | 6 MB | 110 | 20 | 0  | 
| 11 | Song-11 | Album-3 | Song-011 | Band-2 | 2010-12-17 | RAP | ... | 7:30 | 7 MB | 111 | 21 | 1  | 
| 12 | Song-12 | [null] | Song-012 | Band-2 | 2010-12-18 | Rock | ... | 3:30 | 3 MB | 112 | 22 | 2  | 
| 13 | Song-13 | [null] | Song-013 | Band-2 | 2010-12-18 | Rock | ... | 2:30 | 2 MB | 113 | 23 | 3  | 
| 14 | Song-14 | [null] | Song-014 | Band-3 | 2010-12-18 | Rock | ... | 6:30 | 6 MB | 114 | 24 | 4  | 
| 15 | Song-15 | [null] | Song-015 | Band-3 | 2010-12-19 | Rock | ... | 7:30 | 7 MB | 115 | 25 | 5  | 
| 16 | Song-16 | [null] | Song-016 | Band-3 | 2010-12-19 | Rock | ... | 4:30 | 4 MB | 116 | 26 | 6  | 
| 17 | Song-17 | [null] | Song-017 | Band-4 | 2010-12-19 | POP | ... | 3:30 | 3 MB | 117 | 27 | 7  | 
| 18 | Song-18 | [null] | Song-018 | Band-4 | 2010-12-19 | POP | ... | 2:30 | 2 MB | 118 | 28 | 8  | 
| 19 | Song-19 | [null] | Song-019 | Band-5 | 2010-12-20 | Rock | ... | 4:30 | 4 MB | 119 | 29 | 9  | 
| 20 | Song-20 | [null] | Song-020 | Band-5 | 2010-12-20 | Rock | ... | 5:30 | 5 MB | 120 | 30 | 0  | 
| 21 | Song-21 | [null] | Song-021 | Band-5 | 2010-12-20 | Rock | ... | 6:30 | 6 MB | 121 | 31 | 1  | 
| 22 | Song-22 | Album-4 | Song-022 | Band-5 | 2010-12-21 | Rock | ... | 3:30 | 3 MB | 122 | 32 | 2  | 
| 23 | Song-23 | Album-4 | Song-023 | Band-5 | 2010-12-21 | Rock | ... | 2:30 | 2 MB | 123 | 33 | 3  | 
| 24 | Song-24 | Album-4 | Song-024 | Band-5 | 2010-12-21 | Rock | ... | 4:30 | 4 MB | 124 | 34 | 4  | 
| 25 | Song-25 | [null] | Song-025 | Band-6 | 2010-12-22 | Rock | ... | 5:30 | 5 MB | 125 | 35 | 5  | 
| 26 | Song-26 | [null] | Song-026 | Band-6 | 2010-12-22 | Rock | ... | 6:30 | 6 MB | 126 | 36 | 6  | 
| 27 | Song-27 | Album-5 | Song-027 | Band-7 | 2010-12-22 | POP | ... | 4:30 | 4 MB | 127 | 37 | 7  | 
| 28 | Song-28 | Album-5 | Song-028 | Band-7 | 2010-12-22 | PUNK | ... | 3:30 | 3 MB | 128 | 38 | 8  | 
| 29 | Song-29 | [null] | Song-029 | Band-7 | 2010-12-23 | Rock | ... | 2:30 | 2 MB | 129 | 39 | 9  | 
| 30 | Song-30 | Album-6 | Song-030 | Band-8 | 2010-12-25 | Rock | ... | 5:30 | 5 MB | 130 | 40 | 0  | 
+--------+---------+-----------+----------------+---------+---------------+-------+--------+--------+------+-------+-------+----------+ 

앨범 도표 :

012 앨범 ID가 [널]이면, 노래 하나

곡 테이블 수단 열 '이름'내 말에 의해

'싱글 이름 : 그리고 그 결과는 (최근에서 오래된에 주문)된다는 것을 의미합니다 최신 다섯 앨범 및/또는 싱글 을하려면 3,516,

+--------+-----------+----------------+---------+---------------+-------------------+--------+-------+----------+ 
| Row ID | Album ID | Album Name | Band | Date Released |  Genre  | Lenght | Likes | Dislikes | 
+--------+-----------+----------------+---------+---------------+-------------------+--------+-------+----------+ 
| 1 | Album-1 | Album One | Band-1 | 2010-12-15 |  Rock  | 13:30 | 101 | 31 | 
| 2 | Album-2 | Album Two | Band-1 | 2010-12-17 |  POP/RAP  | 9:00 | 102 | 32 | 
| 3 | Album-3 | Album Three | Band-2 | 2010-12-17 | Rock/Punk/POP/RAP | 24:00 | 103 | 33 | 
| 4 | Album-4 | Album Four | Band-5 | 2010-12-21 |  Rock  | 10:30 | 104 | 34 | 
| 5 | Album-5 | Album Five | Band-7 | 2010-12-22 |  Punk/POP  | 8:00 | 105 | 35 | 
| 6 | Album-6 | Album Six | Band-8 | 2010-12-25 |  Rock  | 5:30 | 106 | 36 | 
+--------+-----------+----------------+---------+---------------+-------------------+--------+-------+----------+ 

또는 앨범 이름 '

페이지 1 :

+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
|  Name  | Band | Date Released |  Genre  | IsAlbum? | IsSingle? | Lyrics | Lenght | Size | Likes | Dislikes | Plays | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
| Album Six  | Band-8 | 2010-12-25 |  Rock  | YES |  NO | - | 5:30 | -- | 106 | 36 | - | 
| Song 29  | Band-7 | 2010-12-23 |  Rock  | NO | YES | ... | 2:30 | 2 MB | 39 |  9 | 129 | 
| Album Five  | Band-7 | 2010-12-22 |  Punk/POP  | YES |  NO | - | 8:00 | -- | 105 | 35 | - | 
| Song 26  | Band-6 | 2010-12-22 |  Rock  | NO | YES | ... | 6:30 | 6 MB | 36 |  6 | 126 | 
| song 25  | Band-6 | 2010-12-22 |  Rock  | NO | YES | ... | 5:30 | 5 MB | 35 |  5 | 125 | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 

나는 최신 오 (위의 표에있는 것) 후 최신 다섯을하려는 경우 그리고 앨범 및/또는 싱글, 결과가 될 것입니다 최신순부터 최장순) :

2 페이지 :

+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
|  Name  | Band | Date Released |  Genre  | IsAlbum? | IsSingle? | Lyrics | Lenght | Size | Likes | Dislikes | Plays | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
| Album Four  | Band-5 | 2010-12-21 |  Rock  | YES |  NO | - | 10:30 | -- | 104 | 34 | - | 
| Song 21  | Band-5 | 2010-12-20 |  Rock  | NO | YES | ... | 6:30 | 6 MB | 31 |  1 | 121 | 
| Song 20  | Band-5 | 2010-12-20 |  Rock  | NO | YES | ... | 5:30 | 5 MB | 30 |  0 | 120 | 
| Song 19  | Band-5 | 2010-12-20 |  Rock  | NO | YES | ... | 4:30 | 4 MB | 29 |  9 | 119 | 
| song 18  | Band-4 | 2010-12-19 |  POP  | NO | YES | ... | 2:30 | 2 MB | 28 |  8 | 118 | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 

그리고 다섯 그들이 될 것입니다 전에 :

페이지 3 :

+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
|  Name  | Band | Date Released |  Genre  | IsAlbum? | IsSingle? | Lyrics | Lenght | Size | Likes | Dislikes | Plays | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
| Song 17  | Band-4 | 2010-12-19 |  POP  | NO | YES | ... | 3:30 | 3 MB | 27 |  7 | 117 | 
| Song 16  | Band-3 | 2010-12-19 |  Rock  | NO | YES | ... | 4:30 | 4 MB | 26 |  6 | 116 | 
| Song 15  | Band-3 | 2010-12-19 |  Rock  | NO | YES | ... | 5:30 | 5 MB | 25 |  5 | 115 | 
| Song 14  | Band-3 | 2010-12-18 |  Rock  | NO | YES | ... | 6:30 | 6 MB | 24 |  4 | 114 | 
| song 13  | Band-2 | 2010-12-18 |  Rock  | NO | YES | ... | 2:30 | 2 MB | 23 |  3 | 113 | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 

그리고 오 전 :

페이지 4 :

+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
|  Name  | Band | Date Released |  Genre  | IsAlbum? | IsSingle? | Lyrics | Lenght | Size | Likes | Dislikes | Plays | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
| Song 12  | Band-2 | 2010-12-18 |  Rock  | NO | YES | ... | 3:30 | 3 MB | 22 |  2 | 112 | 
| Album Three | Band-2 | 2010-12-17 | Rock/Punk/POP/RAP | YES |  NO | - | 24:00 | -- | 103 | 33 | - | 
| Song 7   | Band-2 | 2010-12-17 |  Rock  | NO | YES | ... | 3:30 | 3 MB | 17 |  7 | 107 | 
| Album Two  | Band-1 | 2010-12-17 |  POP/RAP  | YES |  NO | - | 9:00 | -- | 102 | 32 | - | 
| song 4   | Band-1 | 2010-12-16 |  Rock  | NO | YES | ... | 4:30 | 4 MB | 14 |  4 | 104 | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 

그리고 마지막 테이블 (또는 페이지)에서 :

페이지 5 :

+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
|  Name  | Band | Date Released |  Genre  | IsAlbum? | IsSingle? | Lyrics | Lenght | Size | Likes | Dislikes | Plays | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 
| Album One  | Band-1 | 2010-12-15 |  Rock  | YES |  NO | - | 13:00 | -- | 101 | 31 | - | 
+-----------------+---------+-----------------+-------------------+----------+-----------+--------+--------+------+-------+----------+-------+ 

하지만, 문제는 그 내가 할 때 X 및의 Y "LIMIT의 X, Y"원 예 : X = 0, Y = 5 또는 X = 5, Y = 5 또는 X = 10, Y = 5 등 ... 또한 결과에서 각 테이블의 다른 열이 필요합니다.) ...

내 질문은 : 내가 PHP와 SQL (MySQL)에서 위에서 한 일을 어떻게 할 수 있습니까?


내 영어 죄송합니다, 나는 그것이 쿼리와 함께 할 수 있다고 생각하고, 그리고 PHP 코드 만 정보를 표시하고 실행합니다

+0

는 SQL이 문제, 또는 PHP는 무엇입니까? – cweiske

+0

@cweiske : 내 문제는 (SQL 또는 PHP와 함께라면 문제가되지 않지만) 그럴 수있는 방법을 찾는 것입니다 ... 예제에서와 같이 올바른 결과를 얻으려면 ... – Andy

답변

1

사전에 감사합니다 페이지 매김

에 대한 쿼리 쿼리 수 있습니다 뭔가 같은 :

SELECT IF(Album_ID IS NULL,s.Song_Name,a.Album_Name) as name,IF(Album_ID IS NULL,s.Date_Released,a.Date_Released) as datereleased 
FROM songs s LEFT JOIN albums a ON (s.Album_ID = a.Row_ID) 
GROUP BY 1,2 
ORDER BY 2 DESC,1 
LIMIT 0,5; /* for the first page */ 
,536,

아이디어는 IF() 함수를 사용하는 것입니다. 두 테이블 (예 : 노래 이름이나 앨범 이름 표시)간에 충돌이있을 때마다 나머지 열이 NULL 값을 가질 때마다 PHP를 사용하여 변경할 수 있습니다 그것은 ("IsAlbum"같은 열)

단지 PHP는 다음 페이지에 대한 링크를 가지고, 결과를 표시하는 쿼리를 excecuting되고 나머지 등

행운

+0

감사합니다. :) – Andy

+0

감사합니다, 그것은 효과가 있었지만, 나는 이해하지 못한다. "** 그룹 별 1,2 **"와 "2 ** DESC, ** 1 **"로 주문 하시겠습니까? 그리고 datereleased가 앨범에서 처음 출시 된 노래가 되길 원한다면 어떻게해야합니까? – Andy

+0

에'GROUP BY'와'ORDER BY'를 쓰면 열 이름을 넣을 수 있습니다 (SELECT 문 순서대로). 첫 번째 출시 된 노래의 날짜를 얻으려면 'IF (Album_ID IS NULL, s.Date_Released, a.Date_Released)'대신 'MIN (s.Date_Released)'를 사용하고 GROUP BY를 'GROUP BY 1'(으)로 변경하십시오. .. 이것이 정말로 작동하는지 확실치 않습니다. 그러나 P를 시도해보십시오. – pleasedontbelong