|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : avril 2003 Messages : 87 ![]() |
Bonjour,
Voilà, mon problème, via une requête je recupère par exemple 5 lignes d'enregistrements. Je souhaiterai que ma nouvelle requête (la même en fait) me retourne qu'une seule ligne à la position désirée...en fait, je cherche la fonction identique à LIMIT de PHP .... D'après la doc, et c'est le seul élément que j'ai trouvé, je dois utiliser FETCH après avoir declarer un curseur sur ma requête...sauf que je n'y arrive pas, je me fais toujours jetter à cause de ma syntaxe ou autres.(et je ne suis même pas sûr que ça soit compatible avec SqlAnywhere 7...(ça me parait quand même bizzare que l'on ne puisse pas faire cela simplement). Merci de votre aide. |
|
|
00
|
|
|
#2 |
![]() ![]() |
Les curseurs marchent sur ASA. Refilez-nous votre code pour qu'on puisse au moins vous dire où ça plante.
En versions récentes, TOP n marche aussi |
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2003 Messages : 87 ![]() |
ok, ok désolé.
Voici ma requete, mais je ne suis pas du tout sûr de la syntaxe, j'ai essayé plusieurs méthodes et au mieux par rapport à ce que j'ai trouvé. Test pour recuperer la seconde ligne des enregistrement retournés par la requête : Code :
|
||
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : avril 2003 Messages : 87 ![]() |
Au fait, effectivement j'ai essayé TOP(n) et FIRST, ça marche, mais ça ne va pas dans mon cas (car ne me permet pas de recuperer le la ligne voulu hormis la première...et malheureusement, je ne peux pas trier pour que la ligne voulue apparaisse en premier)
|
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2003 Messages : 87 ![]() |
Visiblement, la solution ne doit pas être aussi évidante qu'il n'y parait.
Bon alors, j'ai une autre optique, mais là aussi j'ai un problème, mais la cause est surement déjà définie et connue En fait, j'ai ajouté un numero unique chronologique avec number(*), soit la requête devient : (de mémoire, je ne suis pas devant le bon PC) Code :
Donc, je me suis dit, si j'ajoute une clause , ça devrait être bon. Hors, à ma plus grande surprise, la requête ne retourne rien. J'ai essayé avec une table basique d'une seule colonne, j'ai bien le bon affichage mais la clause sur la valeur de numero ne renvoi rien J'ai casté en int mais nada aussi ... J'ai aussi essayé une vue...et toujours pareil, le champs numero est bien présent et renseigné correctement, dumoins d'après ce que je vois, mais impossible de faire une clause dessus Merci de votre aide car vraiment je suis |
||
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : avril 2003 Messages : 87 ![]() |
Vraiment personne pour m'aider et me sortir d'affaire ?
|
|
|
00
|
|
|
#7 |
![]() ![]() |
Si vous avez une ligne avec un select sur la table, mais que vous ne l'avez plus lors de la jointure avec l'autre table, c'est que c'est votre jointure qui péclotte.
J'ai noté que vous faisiez une jointure externe (OUTER JOIN). Votre condition se porte-t-elle sur la table externe ou interne ? |
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : avril 2003 Messages : 87 ![]() |
Si si, mais jointure me renvoie bien les lignes escomptées, le problème ne doit pas être dans ma jointure.
Je voudrais simplement récuperer la ligne 'n' des enregistrements retournés, car je ne peux le faire avec une clause "WHERE". ...Mais je ne trouve pas la solution |
|
|
00
|
|
|
#9 |
![]() ![]() |
Donnez-nous un exemple de sql avec ce que vous obtenez et ce que vous souhaitez obtenir. Ce sera plus clair.
|
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : avril 2003 Messages : 87 ![]() |
Escuse moi (tu peux me tutoyer) pour mon retard dans ma réponse, mais le temps jouant contre moi, j'ai dû abandonner ma nouvelle base au profit de l'ancienne pour la semaine dernière.
Par contre, en sqlanywhere7, je ne suis pas arrivé à recuperer la ligne voulu avec une fonction SQL, mais dans l'aide du 9 sur le site WEB de sybase, une fonction le permettant est disponible (je viens de regarder et evidement je n'arrive pas à la retrouver...), mais elle n'existait pas pour la version 7. Du coup, je suis passé par un autre moyen, j'ai créé une vue et j'ai créé une colonne v_sa_id qui regroupe les clé primaires de mes 2 tables de jointure. Mais là encore, pb, lorsque j'affiche toutes les données de la vue, toutes les données apparaissent bien, mais j'ai un problème pour faire une clause WHERE. Dans interactive SQL, lors de l'execution de ma vue : Code :
SELECT * FROM "DBA"."V_SelectionAnimation" Lorsque je fais ce select avec la clause WHERE Code :
SELECT * FROM "DBA"."V_SelectionAnimation" WHERE v_sa_id="THEME1GROUPE1" Par contre, lors que je fais simplement Code :
SELECT * FROM "DBA"."V_SelectionAnimation" WHERE v_sa_id="THEMESEUl" Sincerement, je comprend que tout peut paraitre flou dans mon explication, car c'est simple dans le resultat mais compliqué à expliquer, sutout que je n'arrive pas à comprendre comment d'un côté, ça sort bien avec le select, mais lorsque je fais la clause WHERE, ça ne me retourne rien (j'ai essayé avec un LIKE, dans ce cas, tous les enregistrements dans la concaténation est du genre THEMEXGROUPEX sont retourné, mais seulement THEMESEULX ne sont pas retournés...) J'espere que tu comprends et que tu pourras m'éclairer... Merci de ta lecture |
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : avril 2003 Messages : 87 ![]() |
Au fait, j'ai contourné mon pb.
Je me rappelai plus que la concaténation d'une valeur avec un NULL donnait NULL...c'est ça qui me jouait un tour dans mon dernier pb énoncé. Du coup, si modifié mon code pour que si jamais ce paramètre est nul, je ne concatène pas. Sinon, pour ma curiosité, toujours pas trouvé pour selectionner simplement la Xième ligne d'un resultat lors d'une requête (identique à LIMIT par exemple en PHP). D'après la doc sur le WEB, c'est une nouveauté de la version 9, moi je tourne sous la 7, mais bon, ça me parait bizzare que cela ne soit pas possible quand même... :-/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com