2010-03-15 14 views
4

Je suis assez nouveau pour les fonctions SQL et je voudrais créer une fonction pour comparer les valeurs dans une table MySQL par rapport à la précédente et je ne sais pas comment faire.Fonction MySQL pour comparer les valeurs dans une table db par rapport à la précédente

Par exemple (IID est la valeur d'entrée)

 
DECLARE pVal INT(20); 
DECLARE val INT(20); 

SELECT price INTO pVal FROM products WHERE Id=iId; 

SELECT price FROM products; 

IF price == pVal THEN 
SET val = price; 
END IF; 

de Merci

+2

Ce n'est pas vraiment clair quel est votre problème? – Leslie

+1

Comment définissez-vous précédent? Que veux-tu trouver? Tous les enregistrements ayant un prix différent ou tous les prix différents d'un produit (dans l'affirmative, que stocke le produit de table?) – Unreason

+0

Votre code est invalide. Ne pourriez-vous pas faire la même chose avec SET val = pVal; Vous itérez sur les mêmes produits pour le même prix. –

Répondre

1

Je ne savais pas comment exécuter une requête de sélection sur une table, puis revenir de cette fonction renvoie plusieurs valeurs une fois qu'ils ont été manipulé. En outre, je ne savais pas si vous pouviez exécuter une requête SELECT dans une fonction qui renvoie plus d'une ligne. La première réponse est que vous ne pouvez pas retourner un tableau de données ou je pense que plus d'une ligne d'une fonction. Par conséquent, je pense que la meilleure façon de le faire est de créer une table temporaire avec le nouvel ensemble de données retourné.

Exemple

 

DROP TEMPORARY TABLE IF EXISTS employeeTemp; 
    CREATE TEMPORARY TABLE employeeTemp AS 
    SELECT id,start_date 
    FROM employee; 

Deuxièmement, la réponse est oui, vous pouvez exécuter une requête SELECT dans une fonction pour revenir plus d'une ligne. Désolé, je suis assez nouveau pour les fonctions de MySQL.

+2

pouvez-vous expliquer, ce que vous voulez faire? Parce que maintenant je pense que les déclencheurs pourraient être ce que vous voulez. – sfossen