php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 03-09-2009, 14:06
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard 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
Mit Zitat antworten
  #2 (permalink)  
Alt 03-09-2009, 14:22
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo Krel,

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

Gruß,

Anja
Mit Zitat antworten
  #3 (permalink)  
Alt 03-09-2009, 14:47
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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ß
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JOIN Datenfelder aus 1. Tabelle vergleichen Skrok SQL / Datenbanken 4 14-03-2008 10:46
Join mit leerer Tabelle a3frankfurt SQL / Datenbanken 5 08-02-2008 10:52
[SQL JOIN] Join mit zählen in einer anderen Tabelle tontechniker SQL / Datenbanken 1 19-05-2006 11:03
vererbte variablen - zugriff ShoAn PHP Developer Forum 3 13-04-2004 20:51
vererbte Liste r*bot PHP Developer Forum 6 12-02-2003 22:30

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:23 Uhr.