Bonjour à tous!
Je suis pas expert en BDD et voici mon problème:
J'ai une requête sql avec jointure sur 4 tables (dbo.scnsavecount, dbo.scnitem, dbo.scnitemparam, dbo.scenarii).
Voici les tables:
dbo.scenarii:
dbo.scnsavecount:
La clé primaire composée est scnid && Filename.
dbo.scnitem:
dbo.scnitemparam:
Voici le code avec la requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 if (m_flagConnection) { string sQry = "SELECT dbo.scenarii.scnname AS Scnname," + " dbo.scnsavecount.scnid AS Scnid," + " dbo.scnitem.id AS Itemid," + " dbo.scnsavecount.filename AS FileName," + " dbo.scnsavecount.compteur AS Compteur," + " dbo.scnitemparam.paramtype AS ParamType," + " dbo.scnitemparam.paramstring AS ParamString, " + " 'Status' AS Status " + " FROM dbo.scnsavecount " + " LEFT JOIN dbo.scnitem ON dbo.scnitem.scnid = dbo.scnsavecount.scnid " + " LEFT JOIN dbo.scnitemparam ON dbo.scnitemparam.itemid = dbo.scnitem.id " + " LEFT JOIN dbo.scenarii ON dbo.scenarii.scnid = dbo.scnitem.scnid " + " WHERE dbo.scnsavecount.filename LIKE '%~%' " + " AND ( " + " (dbo.scnitemparam.paramtype = 'RUN' AND SUBSTRING(dbo.scnsavecount.filename,1,6)=SUBSTRING(dbo.scnitemparam.paramstring,1,6)) " + " OR " + " (dbo.scnitemparam.paramtype IS NULL AND dbo.scnitemparam.paramstring IS NULL) " + " )"; try { cmd = new SqlCommand(sQry, cnn); da = new SqlDataAdapter(cmd); ds = new DataSet(); da.Fill(ds); dataGridView1.AutoSize = false; dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.Fill); dataGridView1.ScrollBars = ScrollBars.Vertical; dataGridView1.DataSource = ds.Tables[0]; } catch (Exception ex) { MessageBox.Show("Bad SQL Query ! "); } }
Lorsque j'ai plusieurs RUN dans ParamType pour une même clé, je souhaiterais ne pas afficher les 3 lignes, mais les regrouper en une seule en concaténant les ParamString (voir stabilo jaune=> ici je voudrais une seule ligne avec dans ParamString "INVRPT_MV_e_GELIN.run;INVRPT_MV_e_GELIN_Euroedi.run;INVRPT_MV_e_Euroedi_Armor.run") , et afficher "Erreur" dans Status.
Idem lorsque ParamType et Pramstring sont nuls (stylo rouge=>on les regroupe en une seule ligne, avec "Erreur" dans Status.
Voici le résultat de ma requête (j'affiche tout dans un datagridview):
La colonne itemid ne sera pas affichée dans le produit final.
Je ne sais pas si l'on peut faire ça avec des CASE ou autre.
Sans forcément rentrer dans mon cas personnel et me mâcher le travail, avez vous des pistes globales pour faire ce genre de choses ? Merci.
Partager