Vous allez y perdre des cheveux...

Les conditions en SQL... C'est pas très beau...

Le problème exposé dans ce sujet a été résolu.

Re-bonjour ! Toujours dans ma lancé dans le SQL, j'ai maintenant besoin de sélectionner en fonction de valeur donnée. L'expression prend 3 valeurs. Ne vous moquez pas de moi en voyant mes jolies conditions !

J'ai un peu mis en forme pour faciliter la lecture, car sur une seule ligne c'est un peu effrayant ;)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
SELECT * FROM History CASE ? --Si la valeur du ? est
                      WHEN "all" THEN --On ne fait rien
                      WHEN "+" THEN WHERE TYPE = "+" --On ne sélectionne que les +
                      WHEN "-" THEN WHERE TYPE = "-" --On ne sélectionne que les -
                      END 

                      ORDER BY ? --On trie par la valeu de la variable qui va etre donnée. Ici par les id ou les prix

                      CASE ? --Si la valeur du ? est
                      WHEN "ASC" THEN ASC --Si ? est "ASC" on tri dans l'ordre croissant
                      WHEN "DESC" THEN DESC --Si ? est "DESC" on tri dans l'ordre décroissant
                      END

Voilà voilà, en espérant que vous avez compris ce que je veux faire… Je vous met le tableau de ma table :

Id Type Amount Date Comment
1 + 12.36 15/02/15 Merci mamie !
2 - 3.25 18/05/15 P'tit sandwich !

Et voici l'erreur que me renvoie mon interpréteur :

1
/usr/local/lib/site_ruby/1.9.1/sqlite3/database.rb:91:in `initialize': near "CASE": syntax error (SQLite3::SQLException)

En gros, il aime pas ce qu'il y a à côté de CASE… Qu'est ce qui ne va pas ?

Merci de votre aide!

Que veux-tu faire exactement ? Tu n'as pas moyen d'ecrire de la logique cote ruby plutot que cote sql ? De mon temps (comprendre que je n'ai pas fais de SQL serieusement depuis longtemps), on evitait les requetes qui contenait de la logique pour eviter des performances desastreuses et la disperssion de la logique metier au sein de la couche DB.

Si il y a moyen mais je pensais que c'était mieux si on faisait les conditions du côté SQL !
La méthode execute accepte t-elle une string ? Car autrement ça me fait un sacré paquet de conditions imbriqués… Et c'était aussi par curiosité que je faisais comme ça

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte