Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

[SQLite] Kartesisches Produkt mit Random Datensätze

Diskussion: [SQLite] Kartesisches Produkt mit Random Datensätze im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo zusammen, ich habe mal eine Frage zur folgenden Problematik: Ich habe eine Tabelle "Track" die alle Tracks (einer ...

Antwort
Alt 08.01.12, 15:26   #1 (permalink)
 
Benutzerbild von reaLInsanity
 
Registriert seit: 10.01.06
reaLInsanity Leistung: Facit NTK
reaLInsanity eine Nachricht über ICQ schicken reaLInsanity eine Nachricht über AIM schicken reaLInsanity eine Nachricht über Yahoo! schicken
Likes: 0
Standard [SQLite] Kartesisches Produkt mit Random Datensätze

Anzeige

Hallo zusammen,

ich habe mal eine Frage zur folgenden Problematik:
Ich habe eine Tabelle "Track" die alle Tracks (einer CD) beinhaltet. Jeder Track hat entsprechend eine gewisse Laufzeit (Duration).

Ich möchte nun bestimmen, welche bestimmten Tracks (Random) zu einer gesamten Laufzeit sein könnten. So eine Art Random-Playlist.

Das heißt, ich will alle Tracks, die ich in 120 Minuten beispielsweise spielen möchte/kann. Dafür brauch einen einen "running value" der Laufzeit für alle Tracks.

Nun habe ich folgenden Ansatz, der mit dem kartesischen Produkt arbeiten. Jedoch bekomme ich nur Schwachsinn heraus:

Code:
SELECT
	t.ID,
	t.Artist,
	t.Title,
	t.Remix,
	t.Duration,
	SUM(t1.Duration) as RunningValue
FROM
	tracks t
	INNER JOIN tracks t1 ON t1.ID <= t.ID
GROUP BY
	t.ID,
	t.Title,
	t.Remix,
	t.Duration
Das Problem was ich nun habe ist aber, dass ich immer die selben Werte habe und nicht random.
Hatte mir auch schon überlegt anstatt "FROM tracks t INNER JOIN.." zu machen, einfach Subselects zu nutzen und mit ORDER BY Random() durchzumischen, dort bekomme ich aber dann Probleme mit dem kathesischen Produkt.

Habt ihr eine Idee wie ich dies machen kann?

Lieben Gruß

Geändert von reaLInsanity (09.01.12 um 09:20 Uhr)
reaLInsanity ist offline   Mit Zitat antworten
Alt 14.01.12, 13:16   #2 (permalink)
Themenstarter
 
Benutzerbild von reaLInsanity
 
Registriert seit: 10.01.06
reaLInsanity Leistung: Facit NTK
reaLInsanity eine Nachricht über ICQ schicken reaLInsanity eine Nachricht über AIM schicken reaLInsanity eine Nachricht über Yahoo! schicken
Likes: 0
Standard

hm keiner eine Idee?
Sorry für den /Push
reaLInsanity ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.01.12, 18:10   #3 (permalink)
Member of Honour
 
Benutzerbild von GrafZahl
 
Registriert seit: 28.05.10
GrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: Opteron
Likes: 210
Standard

damit ich den kram richtig verstanden habe:

du willst random playlists der länge <= 120 min






erstelle eine neue tabelle der form pl_ID;t_ID

[start]

wähle einen identifizierenden wert als pl_ID ...
initialisiere einen laufzeit counter (lc) mit 0

nun lasse ein einzelnes select mit order by Random() auf deine tracks tabelle laufen, und itteriere das ergebnis

wenn der wert duration der jeweiligen ergebniszeile + lc <= 120 min ist, erzeuge in deiner tabelle einen neuen eintrag bestehend aus dem gewählten pl_ID und dem ID wert der ergebniszeile... aktualisiere lc

wenn der wert duration der ergebniszeile + lc > 120 min ist, gehe zur nächsten ergebniszeile

für jede weitere playlist, wiederhole den vorgang ab [start]

die resultierenden playlists haben noch keine reihenfolge (abgesehen von der schreibreihenfolge in der tabelle ...)
__________________
Code:
:(){ :|:& };:
Veritas Aequitas
GrafZahl ist offline   Mit Zitat antworten
Alt 16.01.12, 10:00   #4 (permalink)
Themenstarter
 
Benutzerbild von reaLInsanity
 
Registriert seit: 10.01.06
reaLInsanity Leistung: Facit NTK
reaLInsanity eine Nachricht über ICQ schicken reaLInsanity eine Nachricht über AIM schicken reaLInsanity eine Nachricht über Yahoo! schicken
Likes: 0
Standard

Ja genau. Am liebsten wäre es halt, wenn man das mit einer Abfrage machen könnte. Aber damit hab ich mich eigentlich schon abgefunden, dass das nicht geht. Aktuell habe ich mir eine Tabelle angelegt und fülle die mit Random-Tracks. Wie du es auch schon gesagt hast.

Deine Lösung ist eigentlich auch das, was ich mir am WE ausgedacht hatte.
Aber in einem SELECT wird das vermutlich unmöglich sein, oder?
reaLInsanity ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » [SQLite] Kartesisches Produkt mit Random Datensätze
Themen-Optionen
Ansicht

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 sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Random Freezes Klobesetzer Die Problemzone 11 27.03.08 14:06
sqlite in VC++ shUnderdog Code Kitchen 0 24.03.08 20:18
SQL Datensätze bearbeiten mit möglichst wenig Informationen vom Client rusty-spoon Webmaster-Security 6 25.11.07 03:44
PHP Random Fktn weau (Web-) Design und webbasierte Sprachen 6 11.11.06 13:42
MySQL speichert keine Datensätze meadow (Web-) Design und webbasierte Sprachen 4 15.02.06 16:41


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61