Moin
Sitze nun schon seit Stunden fest und komme nicht mehr weiter.
Ich habe die zwei Entitäten Movies & Movie_actors + die Koppelentität movie_actor_starring_in_movies.
In meiner Funktion will ich nun die Namen der Schauspieler die im Movie movieID mitspielen mit Komma getrennt ausgeben
z.B. so: "Jessica Alba, Tom Hanks, Tim Allen"
Problem ist dass meine innere SELECT Abfrage meine Variable i nicht mag. Wenn ich das Script von unten ausführe, erhalte ich keinen Fehler und die Function wird erstellt. Will ich jedoch die Function ausführen crasht mein komplettes phpmyadmin und ich kann mich nicht mehr einlogen, weil irgendwas mit dem Sockel net stimmt -> Neuinstallation.
Erstelle ich eine Variable so:
SET @i = 0;
und will sie im LIMIT verwenden (...LIMIT @i,1) kann ich die Funktion gar nicht erst erstellen.
Wisst ihr ne Lösung?
Schon mal Danke.
Gruß, Pragmata
Sitze nun schon seit Stunden fest und komme nicht mehr weiter.
Ich habe die zwei Entitäten Movies & Movie_actors + die Koppelentität movie_actor_starring_in_movies.
In meiner Funktion will ich nun die Namen der Schauspieler die im Movie movieID mitspielen mit Komma getrennt ausgeben
z.B. so: "Jessica Alba, Tom Hanks, Tim Allen"
Problem ist dass meine innere SELECT Abfrage meine Variable i nicht mag. Wenn ich das Script von unten ausführe, erhalte ich keinen Fehler und die Function wird erstellt. Will ich jedoch die Function ausführen crasht mein komplettes phpmyadmin und ich kann mich nicht mehr einlogen, weil irgendwas mit dem Sockel net stimmt -> Neuinstallation.
Erstelle ich eine Variable so:
SET @i = 0;
und will sie im LIMIT verwenden (...LIMIT @i,1) kann ich die Funktion gar nicht erst erstellen.
Wisst ihr ne Lösung?
PHP:
DELIMITER //
CREATE FUNCTION getActors( movieID INT )
RETURNS VARCHAR(1000)
BEGIN
DECLARE numActors INT;
DECLARE actorStr VARCHAR(1000) DEFAULT '';
DECLARE aName VARCHAR(200);
declare i INT default 0;
SET numActors = (SELECT COUNT(*) FROM movie_actor_starring_in_movies WHERE movie_id = movieID );
WHILE i < numActors DO
SET aName = ( SELECT CONCAT(a.movie_actor_firstname, ' ', a.movie_actor_lastname)
FROM movie_actors a, movie_actor_starring_in_movies s
WHERE a.movie_actor_id = s.movie_actor_id and
s.movie_id = movieID
ORDER BY a.movie_actor_id
LIMIT i,1);
SET actorStr = CONCAT(actorStr, aName, ', ');
SET i = i+1;
END WHILE;
SET actorStr = SUBSTRING(actorStr, 1, LENGTH(actorStr)-2);
RETURN actorStr;
END //
DELIMITER ;
Schon mal Danke.
Gruß, Pragmata