Je me demande si vous pouvez m'aider s'il vous plaît? Je suis nouveau à SQL et je suis vraiment aux prises avec cette requête. J'ai regardé autour de moi, mais étant nouveau, je me suis vite embrouillé!Création d'une requête SQL pour combiner plusieurs lignes liées ensemble
J'ai hérité d'un tableau d'adresses différentes pour un groupe de clients professionnels. La table est sur un serveur Oracle 12c et j'utilise SQL Developer.
Je souhaite ajouter ces informations à la fin d'une autre requête afin que les utilisateurs puissent voir plus facilement toutes les informations pertinentes pour un seul client dans le rapport final.
Le tableau est aménagé comme ceci:
| CUST_ID | ADDRESS_TYPE | CONTACT_NAME | ADDRESS | CITY | ... |
------------------------------------------------------------------
| 1000| SITE | A SMITH | A ROAD | A TOWN |
| 1000| BUILDER | B JONES | B ROAD | B TOWN |
| 1000| ARCHITECT | A BROWN | C ROAD | A CITY |
| 1001| SITE | B SMITH | A LANE | C TOWN |
| 1001| ARCHITECT | D BROWN | D ROAD | B CITY |
| 1002| SITE | E SMITH | B LANE | D TOWN |
| 1002| ARCHITECT | C JONES | B ROAD | A CITY |
| 1002| BUILDER | F SMITH | C LANE | B TOWN |
Ce que je voudrais créer est:
| CUST_ID | SITE_NAME | SITE_ADDRESS | SITE_TOWN | BUILDER_NAME | BUILDER_ADDRESS | BUILDER_TOWN | ... |
| 1000 | A SMITH | A ROAD | A TOWN | B JONES | B ROAD | B TOWN | ... |
| 1001 | B SMITH | A LANE | A TOWN | NULL | NULL | NULL | ... |
| 1002 | E SMITH | B LANE | D TOWN | F SMITH | C LANE | B TOWN | ... |
Il y a 3 ADDRESS_TYPE
que je suis intéressé par: SITE
, BUILDER
et ARCHITECT
. Donc, plutôt que d'avoir une ligne par ADDRESS_TYPE
par CUST_ID
, je voudrais obtenir une ligne par CUST_ID
avec les informations d'adressage pour chaque ADDRESS_TYPE
comme colonnes supplémentaires. J'utiliserais le CUST_ID
pour joindre le résultat à une autre requête.
Je ne sais pas si je devrais essayer quelque chose avec plusieurs jointures ou si je peux faire une sorte de sous-requête?
Merci beaucoup pour votre temps et votre aide, j'apprécie vraiment!
Merci Hogan, je ne savais pas si les jointures étaient une bonne chose à utiliser pour référencer la même table encore et encore. Je pensais que ça pourrait être vraiment inefficace mais maintenant je sais que je vais essayer! Merci encore pour votre aide – Nikkunaku
@Nikkunaku - en fonction de la taille de la table et des index définis et cela peut être plus rapide que l'utilisation de l'agrégation – Hogan
J'ai finalement essayé les deux méthodes et votre version de jointure a obtenu 380k résultats en 1.74 secondes contre un peu moins de 10 secondes pour la méthode agrégée conditionnelle. Changé le vôtre à la réponse car il est plus facile de voir ce qui se passe et beaucoup plus vite. Merci encore pour votre aide: D – Nikkunaku