Requete select [Résolu]

debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 12 nov. 2014 à 22:27 - Dernière réponse : debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention
- 5 déc. 2014 à 13:42
Bonsoir,
J'ai créer une requète select pour récupérer mon stock dans un dataset et les afficher dans un datagridview, mais j'ai des références qui sont remplacer donc il m'affiche toute les anciennes référence et les nouvelles,je voudrai qu'il m'affiche que les nouvelles référence et celle qui ne sont pas remplacer.
je ne sais si il faut que je le fasse dans ma requete ou dans le dataset
si quelqu'un ou chercher dans la requete ou le dataset.
"Select * From stoc_r where QTE_STOCK > '0'"

alors après j'ai no_art_new et no_art je ne sais pas comment le placer dans ma requete.

merci
Afficher la suite 

Votre réponse

28 réponses

jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 13 nov. 2014 à 00:02
0
Merci
Bonjour
Sur quoi te bases tu pour déterminer quelles sont les nouvelles références ?

Sans ce détail ni la structure de tes tables. ..impossible de te répondre.
Commenter la réponse de jordane45
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 13 nov. 2014 à 12:46
0
Merci
Bonjour,
en fait dans ma table j'ai une colonne no_art , no_art_new,no_art_old et quand je fait un select il me récupére tout et je voudrai qu'il fusionne les références pour ne m'afficher que la nouvelle référence.
ex(G 012A8GM1 no_art,G 013A8JM1 no_art_new et G 012A8FM1 no_art_old) donc je voudrai qu'il ne m'affiche que G 013A8JM1 qui correspond a la nouvelle référence.
merci
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 13 nov. 2014 à 13:15
Donc ce que tu souhaites... c'est uniquement récupérer la colonne no_art_new ??
Dans ce cas... remplace ton
 SELECT *  
par
 SELECT   no_art_new 
.... tout simplement...
Commenter la réponse de debutant71
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 13 nov. 2014 à 13:42
0
Merci
merci mais j'ai déjà essayer et il ne m'affiche pas toute mes référence
non en fait j'ai plusieurs références des qui sont remplacer et d'autre pas et quand j'effectue mon select il m'affiche tout le stock de référence qui existe.Je voudrai qu'il m'affiche que les références qui sont remplacer et celle qui ne le sont pas.c'est pour faire un logiciel de dépréciation de stock pour mon boulot.
je c'est pas trop comment expliquer je pense que c'est dans mon select que je dois faire quand je fais comment ça il me mais erreur dans le select.
"Select * From stoc_r where QTE_STOCK > '0'and replace no_art_new=no_art"
Commenter la réponse de debutant71
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 13 nov. 2014 à 14:23
0
Merci
Bonjour
Rien compris
Commenter la réponse de cs_ShayW
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 13 nov. 2014 à 14:41
0
Merci
je pensé bien.

en gros j'ai des doublons dans ma base
ex(G 012A8FM1 équivaut à G 013A8JM1)
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 13 nov. 2014 à 15:46
Et si ton But est juste de ne pas avoir les Doublons dans ta requête... as tu essayé avec un DISTINCT dans ton SELECT ?
Commenter la réponse de debutant71
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 13 nov. 2014 à 16:07
0
Merci
En relisant.. je pense avoir compris...
Tu as donc des enregistrement avec "JUSTE" un no_art et d'autres où tu as EN PLUS un no_art_new ..
Et donc toi.. tu voudrais obtenir :
Lorsque la ligne ne contient qu'un no_art... ben.. le no_art ....
Lorsque la ligne contient un no_art_new... le no_art_new et non pas le no_art ...

c'est bien ça ??

Si oui.. tu peux utiliser dans ta requête... un CASE WHEN.

Cela s'écrit de cette façon :
SELECT CASE 
  WHEN no_art_new ='' THEN no_art
  ELSE no_art_new
 END as num_art


Commenter la réponse de jordane45
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 13 nov. 2014 à 21:40
0
Merci
ta base selon ton ex
no_art no_art_new no_art_old
G 012A8GM1 G 013A8JM1 G 012A8FM1

tu dis
en gros j'ai des doublons dans ma base
ex(G 012A8FM1 équivaut à G 013A8JM1)

toujours pas clair ou l'impression que toute la table est chamboulée
qu'est ce que no_art no_art_new no_art_old ?
Commenter la réponse de cs_ShayW
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 13 nov. 2014 à 22:53
0
Merci
Déjà merci pour vos réponses.
En gros no_art est la nouvelle référence


donc dans no_art il m'affiche G 012A8JM1 ET G 013A8JM1
et je voudrai qu'il ne m'affiche que G 013A8JM1 dans no_art
quand la référence n'a jamais était remplacer ça va sinon c'est le bordel il me récupére tout
j'ai essayer cette requète donc la ça va il m'affiche no_art mais j'ai toujours mais deux références qui s'affiche dans no_art
"Select no_art,art_descr,casier,qte_stock,,date_cde From stock where QTE_STOCK > '0'"
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 13 nov. 2014 à 23:07
On ne comprend toujours rien.....
Déjà : As tu essayé ce que je t'ai donné ? le CASE WHEN ??

Je pense que le CASE WHEN couplé avec un DISTINCT t'apportera la solution (au vu de l'exemple que tu nous affiches...)
Commenter la réponse de debutant71
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 13 nov. 2014 à 23:40
0
Merci
En gros no_art est la nouvelle référence
et no_art_new ?
Commenter la réponse de cs_ShayW
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 13 nov. 2014 à 23:45
0
Merci
Je vais essayer j'ai placer CASE WHEN juste après le select mais comment tu mais ton DISTINCT.
j'ai un peu de mal avec le select je ne sais pas comment organiser tout ça.
et encore merci
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 13 nov. 2014 à 23:51

mais comment tu mais ton DISTINCT.


......
SELECT DISTINCT ......
Commenter la réponse de debutant71
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 13 nov. 2014 à 23:55
0
Merci
du cou je suis en train de m'en mêlé les pinceaux
no_art_new devrai s'afficher dans no_art.
Je voudrai qu'il m'affiche G 013A8JM1 dans no_art comme sa le fait déjà et pas G 012A8GM1 mais il m'affiche toujours l'ancienne référence
Commenter la réponse de debutant71
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 14 nov. 2014 à 00:08
0
Merci
donc la j'ai mis comme ça il m'affiche bien la nouvelle référence dans no_art mais il ne m'affiche pas les autres références qui ne sont pas remplacer je sais c'est compliquer

"Select DISTINCT case WHEN no_art_new ='' THEN no_art ELSE no_art_new END as no_art,art_descr,casier,prix_achat,pmp,qte_stock,qte_cde,qte_res_ate,qte_res_mag,genre,date_cde From stock where QTE_STOCK > '0'"
Commenter la réponse de debutant71
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 14 nov. 2014 à 01:40
0
Merci
il ne m'affiche pas les autres références qui ne sont pas remplacer je sais c'est compliquer

Je ne comprend pas ta phrase... il t'affiche.. les données des lignes qui n'ont pas de no_art_new ou les autres ??

Lorsque no_art_new est "vide" .. quelle est la valeur de ton champ ? NULL ou "" ...??

=> On en revient encore à ma remarque précédente.... SANS UN DUMP DE TA BDD .. difficile de t'aider !!!


Mais bon...Y'a des choses à revoir..
Déjà.. le fonctionnement de ta BDD ... Je ne comprend pas à quoi te servent les champs no_art_new et
no_art_old si toi.. finalement.. tu ne veux "que" les nouvelles références....

Ensuite...Je pense que ta BDD est mal pensée....
Ta BDD a l'air d'être une base de gestion de stock et de commandes...
Tu devrais avoir, vu ce que tu nous présentes, un découpage de la forme:

Une table Articles
id_article,qte_stock,ref_art,art_descr, prix_art ....

Une table References_article
id_ref,id_article,no_art, ref_actuelle*
=> ref_actuelle étant un booléen ( true ou false.. 1 ou 0 .. servant à indiquer s'il s'agit de la référence actuelle ( la "new_ref")..
Une table Commandes
id_cde, date_cde,client_id....

Une table items_commande :
id_item,id_cde,id_article,qte_cde,...

Une table clients
id_client,nom,prenom, adresse, ...

Les relations entre les tables se faisant de la façon suivante :
A UN article est associé UNE ou PLUSIEURS références
A UNE Commande est associée un ou plusieurs ITEMS_commande
A UN item est associé UN article
A Une commande est associé UN client
.....C'est comme ça qu'on structure une base de données (c'est le principe d'une BDD relationnelle...)....et c'est plus simple (et plus logique) ensuite à manipuler...
Il faut se dire qu'une table représente un "objet" ( un client.. une commande, une référence .....)
Commenter la réponse de jordane45
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - Modifié par debutant71 le 14/11/2014 à 12:44
0
Merci
Oui ma base de données est une base de gestion de stock
par exemple je rentre un BL avec mes références le prix et tout ce qui va avec la référence, mais parfois celle ci est remplacer,
donc pour récupérer la base pas de souci mais dans no_art il y a la nouvelle référence et l'ancienne il faudrait que dans no_art il m'affiche G 013A8JM1 et non G 012A8GM1 mais la il m'affiche les deux.C'est pour un logiciel de dépréciation de stock donc après quand je vais faire le calcul de ma colonne prix ça ne sera pas bon car il va me calculer le prix de l'ancienne référence et de la nouvelle avec les quantités qui vont avec donc je ne serai pas bon dans mon calcul.
c'est une base oracle.
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 14 nov. 2014 à 12:59
par exemple je rentre un BL avec mes références le prix et tout ce qui va avec la référence, mais parfois celle ci est remplacer,
donc pour récupérer la base pas de souci mais dans no_art il y a la nouvelle référence et l'ancienne il faudrait que dans no_art il m'affiche G 013A8JM1 et non G 012A8GM1 mais la il m'affiche les deux.

Oui...ça on avait compris.....
As tu lu ce que je t'ai marqué comme recommandations concernant la structure de ta base ?????
Par ce que là... nous répéter ce que tu veux avoir...sans tenir compte de nos remarques..ça ne fera pas avancer le chmilblik....

La structure de ta base telle qu'elle est actuellement risque de rendre le traitement de ta question assez difficile...
Tout mettre dans UNE SEULE table n'est pas bon.... la preuve.. ça rend sa manipulation compliquée !!

mais encore une fois... avec un DUMP de ta BDD.. peut être que quelqu'un arrivera à te proposer une autre solution.....
Commenter la réponse de debutant71
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 14 nov. 2014 à 13:12
0
Merci
Tu me dit de mettre tout dans une table n'est pas bon,
oui j'ai lu les recommandation que tu m'a mis.
mais je pense que je n'ai pas le choix car tout est dans ma table stock.
qu'es ce qu'un DUMP et comment tu le fait es ce que il faut une autorisation spécial sur la base parce que je ne voudrai mettre la pagaille dans la base du boulot.
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 14 nov. 2014 à 14:09
qu'es ce qu'un DUMP et comment tu le fait

http://lmgtfy.com/?q=oracle+dump+database
Commenter la réponse de debutant71
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 16 nov. 2014 à 10:33
0
Merci
Bonjour,
J'ai reussi a recupere le nom des tables dans la base j'ai trouver une autre table avec les references donc il ne me reste qu'a faire la relation avec les autres pour trouver le prix et les autres choses qui m'interresse je regarde et je vous tient au courant.
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 16 nov. 2014 à 22:40
J'ai récupérer une table mais il n'y a pas de données dedans es ce qu'il y a une restriction sur la table pour ne pas afficher les données
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 16 nov. 2014 à 22:51
s'il tu ne vois pas de données dedans...c'est qu'il n'y en pas... ou que le User que tu utilises pour te connecter à la BDD ne dispose pas des droits suffisants.
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 16 nov. 2014 à 23:01
je viens d'essayer avec une autre société et avec la même table et j'ai récupérer des données dedans.
comment on fait pour faire une relation avec plusieurs tables et quel table sont en relation entre elle si vous avez un exemple.
jordane45 22906 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 16 nov. 2014 à 23:06

comment on fait pour faire une relation avec plusieurs tables dans datatable

On appelle ça des JOINTURES.

Pour les exemples... La doc oracle peut t'en donner :
https://docs.oracle.com/cd/B28359_01/server.111/b28286/queries006.htm#SQLRF52331
Commenter la réponse de debutant71
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 19 nov. 2014 à 00:00
0
Merci
Bonsoir,
J'ai trouve le replace pour la requete select , comment doit ton le mettre dans la requete à la place du case when,j'ai essayer plusieurs façon mais je n'y arrive pas
"Select UNIQUE case WHEN no_art_new ='' THEN no_art ELSE no_art_new END as no_art,art_descr,casier,prix_achat,pmp,qte_stock,qte_cde,qte_res_ate,qte_res_mag,genre,date_cde From STOC_R WHERE QTE_stock>'0'"
Commenter la réponse de debutant71
debutant71 53 Messages postés dimanche 19 octobre 2014Date d'inscription 17 juillet 2015 Dernière intervention - 5 déc. 2014 à 13:42
0
Merci
Bonjour,
j'ai trouver une solution et elle marche mais j'ai une erreur d'index
pouvez-vous me donner votre avis et si vous avez une solution pour corriger l'erreur d'index.
merci

 For i As Integer = 0 To DataGrid1.Rows.Count - 1
If Not Me.DataGrid1.Rows(i).Cells("no_art_new").Value Is DBNull.Value Then

table.Rows.Remove(table.Rows(i))
DataGrid1.Refresh()
End If

Next
Commenter la réponse de debutant71

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.