Requete select

Résolu
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015 - 12 nov. 2014 à 22:27
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015 - 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

18 réponses

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
13 nov. 2014 à 00:02
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.
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
13 nov. 2014 à 12:46
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
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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...
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
13 nov. 2014 à 13:42
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"
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
13 nov. 2014 à 14:23
Bonjour
Rien compris
0

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

Posez votre question
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
13 nov. 2014 à 14:41
je pensé bien.

en gros j'ai des doublons dans ma base
ex(G 012A8FM1 équivaut à G 013A8JM1)
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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 ?
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
13 nov. 2014 à 16:07
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


0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
13 nov. 2014 à 21:40
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 ?
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
13 nov. 2014 à 22:53
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'"
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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...)
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
13 nov. 2014 à 23:40
En gros no_art est la nouvelle référence
et no_art_new ?
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
13 nov. 2014 à 23:45
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
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
13 nov. 2014 à 23:51

mais comment tu mais ton DISTINCT.


......
SELECT DISTINCT ......
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
13 nov. 2014 à 23:55
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
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
14 nov. 2014 à 00:08
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'"
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
14 nov. 2014 à 01:40
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 .....)
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
Modifié par debutant71 le 14/11/2014 à 12:44
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.
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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.....
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
14 nov. 2014 à 13:12
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.
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
14 nov. 2014 à 14:09
qu'es ce qu'un DUMP et comment tu le fait

http://lmgtfy.com/?q=oracle+dump+database
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
16 nov. 2014 à 10:33
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.
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
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
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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.
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
Modifié par debutant71 le 16/11/2014 à 23:06
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.
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
19 nov. 2014 à 00:00
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'"
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
5 déc. 2014 à 13:42
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
0
Rejoignez-nous