Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
11 avril 2009 à 16:39
gperuch
Messages postés40Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention 2 février 2012
-
26 avril 2009 à 21:21
Bonjour à tous,
Voila, je fais un site en ASP.NET et j'ai une requête spécifique à faire.
Je souhaiterai faire une requête select dans un dataset (TableAdapter) pour replir une datadable avec une ligne sur deux
C'est à dire que la table contiendra une ligne sur deux des données de la base (que les lignes paire ou impaire par ordre d'ajout dans la table) sachant que la base ne possède pas de N° de ligne, les données sont identifié par des GUID et je ne peu pas modifier celle-ci.
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 17 avril 2009 à 10:16
re,
sans connaitre le contexte, il y a des trucs qui m'échappent ?
pourquoi une ligne sur deux, et pas par exemple les 50% premières dans une table et le reste dans une autre ?
car visiblement, il n'y a pas d'ordre particulier a tes enregistrements. quand tu fais ton select, le serveur te renvoi les données a priori dans l'ordre dans lequel ils ont été enregistrés dans la base, mais si un jours tu met un index sur ces données, l'ordre dans lequel le serveur va te les renvoyer risque fort d'etre différent. et dans tout les cas, si tu ne fait pas un classement spécifique, rien ne peut te garantir l'ordre dans lequel les données sont renvoyées.
sinon, si tu n'as aucune colonne qui te permette d'identifier pour chaque ligne, sa table de destination, la seule solution que je vois ,c'est de passer par un curseur, et de repartir les données ligne par ligne.
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 22 avril 2009 à 19:22
pardon pour la réponse tardive...
Tu as raison aieeeuuuuu, en fait je me suis encore mal exprimé lol,
c'est une table de famille de produits pour un site commercial.
J'utilise une datalist pour présenter ces familles, mais je veux afficher 2 éléments par lignes.
Je crée donc deux datalist et deux datasources différentes, séparés par un tableau.
Un datalist de gauche pour afficher les éléments impaires et une de droite pour les éléments paires.
Voila une solution qui fonctionne que j'ai pu obtebir sur d'autres forums:
SELECT Family_ID, Family_Name, Family_Desc, Family_Image, Family_Color, Family_Exist, rk FROM (SELECT Family_ID, Family_Name, Family_Desc, Family_Image, Family_Color, Family_Exist, ROW_NUMBER() OVER (ORDER BY Family_Name) AS rk FROM ITS_Familys AS a WHERE (Family_Exist 'True')) AS t WHERE (rk % 2 0)
Donc tu avais raison mon ORDER BY c'est family_Name, il y a bien un classement par défaut.
Merci pour votre aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
gperuch
Messages postés40Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention 2 février 20121 26 avril 2009 à 21:21
Salut ,
Je connais pas trop ton programme et le but , mais je trouve cette derniere solution un peu dangereuse:
Le Row_number() numerote les lignes qui sortent et tu te base la dessus selon l'ordre de family_name.
Demain tu "insert" une nouvelle famille et tous les impaires passe en pair et vice versa.
Est ce un probleme pour ton programme???
SELECT Family_ID, Family_Name, Family_Desc, Family_Image, Family_Color, Family_Exist, rk
FROM
(SELECT Family_ID, Family_Name, Family_Desc, Family_Image,
Family_Color, Family_Exist, ROW_NUMBER() OVER (ORDER BY Family_Name) AS
rk FROM ITS_Familys AS a WHERE (Family_Exist = 'True')) AS t WHERE (rk
% 2 = 0)