|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 37 ![]() |
Bonjour à tous et bonne année !!!
Je suis en train de chercher un moyen pour récupérer les 2 valeurs max ainsi que les autre éléments de ces 2 lignes dans une base SQLite. id | nom | age | 1 toto 23 2 tata 28 3 copain 15 4 pouet 30 Donc , dans cet exemple, je voudrai récupérer les 2 lignes : 2 tata 28 4 pouet 30 Est-il possible de faire cela avec une seule requête ? Merci pour votre aide neospirit |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 94 ![]() |
Bonjour,
Tu peux essayer ça comme requête : Code :
SELECT id, nom, age FROM taTable ORDER BY age DESC LIMIT 2; |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 37 ![]() |
OK merci j'essaierai ce soir. Je te tiens au courant
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 37 ![]() |
En fait en allant plus loin, je voudrais récupérer le 1er maximum de la liste (4 pouet 30) et récupérer le 2ème maximum (2 tata 28).
Pour le 1er je pense savoir le faire grâce à l'instruction que tu m'as donné mais pour le 2ème, je vois pas trop... Merci neospirit |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 94 ![]() |
Pour sélectionner le premier, il vaut mieux utiliser le MAX :
Code :
SELECT MAX(id) , nom, age FROM taTable Code :
SELECT id, nom, age FROM taTable ORDER BY age DESC LIMIT 1 OFFSET 1; Mais le plus simple, c'est de récupérer les 2 résultats en même temps (avec la première requête du post) , puis dans ton code, tu sais que la première ligne correspond au 1er, que la deuxième ligne correspond au 2éme ... |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 37 ![]() |
Je veux bien récupérer les 2 résultats en même temps mais je ne vois pas comment. Je comprends bien comment récupérer la 1ère avec par exemple :
Code :
ageSqlite = sqlite3_column_int(compiledStatement,1); En plus quand tu executes cette requete : Code :
SELECT MAX(id) , nom, age FROM taTable |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 94 ![]() |
Ma requête ne modifie rien du tout. Elle lit juste les données dans la table et sélectionne l'age max.
Je viens de voir qu'elle comporte une erreur car elle sélectionne l'id le plus grand et non l'age. Donc la bonne requête sera : Code :
SELECT MAX(age) , nom, id FROM taTable |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 37 ![]() |
Je n'ai pas trouvé exactement dans les tutos ce que je voulais c'est pourquoi j'en suis à l'étape forum.
Si j'ajoute un offset sur le MAX pour avoir le 2ème ? Code :
SELECT MAX(age) , nom, id FROM taTable OFFSET 1; |
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 37 ![]() |
Bonjour,
j'ai finalement trouvé une solution. Je sais pas si c'est la meilleure mais voilà : Code :
Qu'en pensez-vous ? neospirit |
||
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 94 ![]() |
Regarde ce tuto dans la partie 5 (The Coding begins!), tu peux voir du code pour parcourir les lignes retournées par tes requêtes : http://dblog.com.au/iphone-developme...lite-database/
Sinon tu peux utiliser des librairies pour faciliter l'accès à ta base de données : http://stackoverflow.com/questions/6...lite-on-iphone |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 37 ![]() |
Oui j'ai déjà regardé ce tuto. Il a d'ailleurs été repris et traduit et quelque peu modifié par le site iPuP (tuto n°14). Je m'en suis beaucoup inspiré également pour développer la partie SQLite de mon appli.
Cependant le "while" qui permet de mettre les données de la BDD dans un tableau d'objets ne me convient pas. Les autres librairies, dont fmdb, m'apportent encore plus de confusion. Je suis un débutant et j'utilise très légèrement le SQLite dans mon appli iPhone. Le framework SQLite d'origine livré avec XCode convient à une utilisation très basique je pense. J'essaie juste de savoir si mon modeste bout de code est quelque chose qui peut se faire ou bien si cela génèrera des problèmes ? Merci neospirit |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com