Vererbte playlisten, join auf eigene Tabelle?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Vererbte playlisten, join auf eigene Tabelle?

    Hallo zusammen,
    ich hab grad ein Problem bei dem ich nicht ganz weiter komme, vielleicht ist mein DB-Design auch fürn A... vielleicht könnt ihr ja mal grad schauen. Folgende Konstellation:
    Es gibt player
    Code:
    +----------------------------------+--------------+------------------+
    | player_id                        | description  | current_position |
    +----------------------------------+--------------+------------------+
    | 1d770934d44de09b0d24f04fd01708ba | MixedPlayer3 |                1 |
    | 6769049972c2a84b3a284e13df88cfe2 | SlidePlayer  |                3 |
    | a2fd49f8a592391579f671b63cecd8bc | VideoPlayer  |                6 |
    | efa74909e7e1ef7b884a33bacbef6823 | TextPlayer   |                4 |
    +----------------------------------+--------------+------------------+
    media_playlist
    Code:
    +-------------+-------------------+------------------+-----------------+---------------------+---------------------+
    | playlist_id | inheritance_level | inheritance_from | description     | valid_from          | valid_to            |
    +-------------+-------------------+------------------+-----------------+---------------------+---------------------+
    |           1 |                 1 |             NULL | neue Playlist   | 2009-08-31 00:00:00 | 2009-09-07 00:00:00 |
    |           2 |                 2 |                1 | zweite Playlist | 2009-09-01 00:00:00 | 2009-09-08 00:00:00 |
    +-------------+-------------------+------------------+-----------------+---------------------+---------------------+
    media_playlist_items
    Code:
    +------------------+-------------+----------------------------------+----------+
    
    | playlist_item_id | playlist_id | media_id                         | position |
    
    +------------------+-------------+----------------------------------+----------+
    
    |                1 |           1 | 63496bc33be71da52fac7f8cb04f87cb |        0 |
    
    |                2 |           1 | c2e9f938e94adb638203e491e1034dac |        1 |
    
    |                3 |           1 | e8801ba3332b16eb104748efaa6f3d81 |        2 |
    
    |                4 |           2 | e58402fa8a44135597a194e5417f327d |      2.3 |
    
    +------------------+-------------+----------------------------------+----------+
    playlist_player
    Code:
    +-------------+----------------------------------+
    | playlist_id | player_id                        |
    +-------------+----------------------------------+
    |           2 | 1d770934d44de09b0d24f04fd01708ba |
    +-------------+----------------------------------+
    Also es gibt player und media_playlisten, in playlist_player wird die Verbindung player zu playlist hergestellt. media_playlist_items beinhaltet die items der jeweiligen playlisten. Ein Playlist kann von einer anderen Playlist erben. Jetzt ergibt folgende Query:
    Code:
    SELECT   m.media_id                                ,
             m.type                                    ,
             m.title                                   ,
             UNIX_TIMESTAMP(m.valid_date) AS valid_date,
             m.newsticker                              ,
             m.duration                                ,
             m.reference                               ,
             pi.position
    FROM     playlist_player pp     ,
             media_playlist mp      ,
             media_playlist_items pi,
             media m                ,
             player p
    WHERE    p.player_id    = '1d770934d44de09b0d24f04fd01708ba'
         AND pi.position    > p.current_position
         AND p.player_id    = pp.player_id
         AND pp.playlist_id = mp.playlist_id
         AND pp.playlist_id = pi.playlist_id
         AND pi.media_id    = m.media_id
    ORDER BY pi.position ASC
    liefert nur die Items aus der Playlist 2. Hat jemand ne Idee, wie ich jetzt auch die Items aus Playlist 1 kriege? Den die Playlist 2 erbt ja von der ersten. Als Ergebnis sollte das gleiche rauskommen wie oben die media_playlist_items. auch in der Reihenfolge. Ich hab wahrscheinlich grad nen Brett vorm Kopf, hab leider keinen Ansatz für das Problem.

    Gruß
    Krel

  • #2
    Hallo Krel,

    wenn du mal nach "Nested Sets" googlest, findest du einen ziemlich genialen Ansatz, der dir sicher manches vereinfachen wird.

    Gruß,

    Anja
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Das Prinzip der nested sets ist mir bekannt. Ich weiß nur grad nicht wie ich das weiter anwenden soll. Die Query
      Code:
      SELECT   m.media_id                                ,
               m.type                                    ,
               m.title                                   ,
               UNIX_TIMESTAMP(m.valid_date) AS valid_date,
               m.newsticker                              ,
               m.duration                                ,
               m.reference                               ,
               pi.position
      FROM     media m
               INNER JOIN media_playlist_items pi
               ON       m.media_id = pi.media_id
               INNER JOIN playlist_player pp
               ON       pi.playlist_id = pp.playlist_id
               INNER JOIN media_playlist mp
               ON       pp.playlist_id = mp.playlist_id
               LEFT JOIN media_playlist_items AS mp1
               ON       mp.inheritance_from = mp1.playlist_id
               INNER JOIN player p
               ON       pp.player_id = p.player_id
      WHERE    p.player_id           = '1d770934d44de09b0d24f04fd01708ba'
           AND pi.position           > p.current_position
      ORDER BY pi.position ASC
      liefert mir nur drei mal das gleiche media.
      Muss ich meine Datenbankstruktur ändern?

      Gruß

      Kommentar

      Lädt...
      X