Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requete SQL

3 réponses
Avatar
Fino
Bonjour,

J'interroge ma table A pour récupérer des informations sur des films j'ai
une table B,C,D dans lesquels j'ai les listes des réalisateurs, producteurs
acteurs etc...

J'ai des tables intérmédiaires T_R_b, T_R_c, T_R_d qui font les relations
(1,n) entre la table A et B car je peux avoir pour un films plusieurs
réalisateurs, producteurs acteurs etc..

Je voudrais obtenir quand j'interroge ma base les informations de ma table A
et ceux des autres tables avec la liste des réalisateurs ou producteurs ou
acteurs dans une même colonne chacune séparée par un séparateurs quelconque
une ", " par exemple est-ce possible car je sèche un peu sur la requête ?

exemple de ce que je recherche Résultat :

Colonne 1 |Colonne 2 |Colonne 3 | Colonne 4| Colonne 5 |
Colonne 6 | Colonne 7
| Colonne 8 |

info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |

J'espère que j'ai bien exprimé ma demande.

Merci de votre aide.

Loïc

3 réponses

Avatar
Fred BROUARD
Bonjour,

Fino a écrit :
Bonjour,

J'interroge ma table A pour récupérer des informations sur des films j'ai
une table B,C,D dans lesquels j'ai les listes des réalisateurs, producteurs
acteurs etc...

J'ai des tables intérmédiaires T_R_b, T_R_c, T_R_d qui font les relations
(1,n) entre la table A et B car je peux avoir pour un films plusieurs
réalisateurs, producteurs acteurs etc..

Je voudrais obtenir quand j'interroge ma base les informations de ma table A
et ceux des autres tables avec la liste des réalisateurs ou producteurs ou
acteurs dans une même colonne chacune séparée par un séparateurs quelconque
une ", " par exemple est-ce possible car je sèche un peu sur la requête ?



C'est possible, mais complexe, car il s'agit de cosmétique. SQL est là
pour vous permettre de manipuler des données, et ne doit pas s'occuper
de la mise en forme... Or le fait de présenter des données dans n
colonnes ou bien dans une seule et même colonne, ne change rien au
résultat, c'est juste un question de présentation, donc de "cosmétique" !
A lire :
http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9



exemple de ce que je recherche Résultat :

Colonne 1 |Colonne 2 |Colonne 3 | Colonne 4| Colonne 5 |
Colonne 6 | Colonne 7
| Colonne 8 |

info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A | info
table B "," info table B info table B "," info table B | info table C","
info table C | info table D"," info table D |

J'espère que j'ai bien exprimé ma demande.



Si vous voulez cependant réaliser cela, alors il vous faut utiliser une
requête récursive à l'aide des "Common Table Expressions" (CTE) ou
expression de table.
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/cte-recursives/
... il y a un exemple relatif à votre problème :
http://sqlpro.developpez.com/cours/sqlserver/cte-recursives/#LX

En tout état de cause, il vaudrait mieux que cela soit traité par une
autre couche de votre SI...


Merci de votre aide.

Loïc






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Avatar
Fino
Bonsoir,

Merci de votre réponse par contre est ce qu'il existe une différence entre
récupérer les données dans une même colonne séparé par un séparateur (et là
je comprends le côté cosmétique) ou le fait de récupérer les informations
dans des colonnes distinctes mais bien ligne par ligne ?

Je cherche la meilleure façon de faire car le but final (dans une appli
vb.net) est d'obtenir un fichier excel (en utilisant le composant excel) et
j'avais dans un premier temps récupéré les informations (dans un datagrid)
ligne par ligne et j'analysais ensuite les colonnes à "réponses mulitples"
et modifier le résultat final de chaque ligne (dans le fichier excel final)
mais je ne pense pas que cette méthode soit la plus performante.

Merci de votre aide.

Loïc

"Fred BROUARD" a écrit dans le message de news:
uXUwhnq$
Bonjour,

Fino a écrit :
Bonjour,

J'interroge ma table A pour récupérer des informations sur des films j'ai
une table B,C,D dans lesquels j'ai les listes des réalisateurs,
producteurs acteurs etc...

J'ai des tables intérmédiaires T_R_b, T_R_c, T_R_d qui font les relations
(1,n) entre la table A et B car je peux avoir pour un films plusieurs
réalisateurs, producteurs acteurs etc..

Je voudrais obtenir quand j'interroge ma base les informations de ma
table A et ceux des autres tables avec la liste des réalisateurs ou
producteurs ou acteurs dans une même colonne chacune séparée par un
séparateurs quelconque une ", " par exemple est-ce possible car je sèche
un peu sur la requête ?



C'est possible, mais complexe, car il s'agit de cosmétique. SQL est là
pour vous permettre de manipuler des données, et ne doit pas s'occuper de
la mise en forme... Or le fait de présenter des données dans n colonnes ou
bien dans une seule et même colonne, ne change rien au résultat, c'est
juste un question de présentation, donc de "cosmétique" !
A lire :
http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9



exemple de ce que je recherche Résultat :

Colonne 1 |Colonne 2 |Colonne 3 | Colonne 4| Colonne 5 | Colonne
6 | Colonne 7 |
Colonne 8 |

info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |

J'espère que j'ai bien exprimé ma demande.



Si vous voulez cependant réaliser cela, alors il vous faut utiliser une
requête récursive à l'aide des "Common Table Expressions" (CTE) ou
expression de table.
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/cte-recursives/
... il y a un exemple relatif à votre problème :
http://sqlpro.developpez.com/cours/sqlserver/cte-recursives/#LX

En tout état de cause, il vaudrait mieux que cela soit traité par une
autre couche de votre SI...


Merci de votre aide.

Loïc




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************



Avatar
Fred BROUARD
Fino a écrit :
Bonsoir,

Merci de votre réponse par contre est ce qu'il existe une différence entre
récupérer les données dans une même colonne séparé par un séparateur (et là
je comprends le côté cosmétique) ou le fait de récupérer les informations
dans des colonnes distinctes mais bien ligne par ligne ?



c'est la même chose : que les données soient en ligne ou colonne, le
fait de vouloir à tout prix les disposer comme ceci ou cela relève de la
pure cosmétique...


Je cherche la meilleure façon de faire car le but final (dans une appli
vb.net) est d'obtenir un fichier excel (en utilisant le composant excel) et
j'avais dans un premier temps récupéré les informations (dans un datagrid)



utilisez plutot un dataset et donc le curseur sous jacent pour le
parcourir et construire un tableau qui servir de source à construire le
fichier Excel.

ligne par ligne et j'analysais ensuite les colonnes à "réponses mulitples"
et modifier le résultat final de chaque ligne (dans le fichier excel final)
mais je ne pense pas que cette méthode soit la plus performante.

Merci de votre aide.

Loïc

"Fred BROUARD" a écrit dans le message de news:
uXUwhnq$
Bonjour,

Fino a écrit :
Bonjour,

J'interroge ma table A pour récupérer des informations sur des films j'ai
une table B,C,D dans lesquels j'ai les listes des réalisateurs,
producteurs acteurs etc...

J'ai des tables intérmédiaires T_R_b, T_R_c, T_R_d qui font les relations
(1,n) entre la table A et B car je peux avoir pour un films plusieurs
réalisateurs, producteurs acteurs etc..

Je voudrais obtenir quand j'interroge ma base les informations de ma
table A et ceux des autres tables avec la liste des réalisateurs ou
producteurs ou acteurs dans une même colonne chacune séparée par un
séparateurs quelconque une ", " par exemple est-ce possible car je sèche
un peu sur la requête ?


C'est possible, mais complexe, car il s'agit de cosmétique. SQL est là
pour vous permettre de manipuler des données, et ne doit pas s'occuper de
la mise en forme... Or le fait de présenter des données dans n colonnes ou
bien dans une seule et même colonne, ne change rien au résultat, c'est
juste un question de présentation, donc de "cosmétique" !
A lire :
http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9


exemple de ce que je recherche Résultat :

Colonne 1 |Colonne 2 |Colonne 3 | Colonne 4| Colonne 5 | Colonne
6 | Colonne 7 |
Colonne 8 |

info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |
info table A |info table A |info table A |info table A |info table A |
info table B "," info table B info table B "," info table B | info table
C"," info table C | info table D"," info table D |

J'espère que j'ai bien exprimé ma demande.


Si vous voulez cependant réaliser cela, alors il vous faut utiliser une
requête récursive à l'aide des "Common Table Expressions" (CTE) ou
expression de table.
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/cte-recursives/
... il y a un exemple relatif à votre problème :
http://sqlpro.developpez.com/cours/sqlserver/cte-recursives/#LX

En tout état de cause, il vaudrait mieux que cela soit traité par une
autre couche de votre SI...

Merci de votre aide.

Loïc



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************









--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************