Requête select une ligne sur deux

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 11 avril 2009 à 16:39
gperuch Messages postés 40 Date d'inscription dimanche 18 janvier 2009 Statut Membre Derniè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.

Si quelqu'un a une solution, ca serait sympa

Merci d'avance pour votre aide.
A voir également:

5 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
14 avril 2009 à 10:01
Bonjour,

je ne comprend pas trop le principe, mais pourquoi ne pas simplement filtrer sur le GUID ? ne prendre que les ID paires ?
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 avril 2009 à 11:15
Le principe est simple je me suis peut être mal expliqué :

J'ai une table :

Ligne 1 = GUID, Nom, Ref...
Ligne 2 = GUID, Nom, Ref...
Ligne 3 = GUID, Nom, Ref...
Ligne 4 = GUID, Nom, Ref...
Ligne 5 = GUID, Nom, Ref...

Je voudrais avoir 2 tables qui ne contiennent :

Table 1 : 

Ligne 1 = GUID, Nom, Ref...
Ligne 3 = GUID, Nom, Ref...
Ligne 5 = GUID, Nom, Ref...

Tabe 2:

Ligne 2 = GUID, Nom, Ref...
Ligne 4 = GUID, Nom, Ref...

Pour le GUID il est généré de façon aléatoire, donc il m'est impossible de trouver les paires/impaires...
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gperuch Messages postés 40 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 2 février 2012 1
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)

greg
0
Rejoignez-nous