IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Galère SQL


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Par défaut Galère SQL
    Bon voilà j'ai un nouveau job et j'ai hérité de la place de responsable DB. En premier lieu j'ai une base qui est organisée n'importe comment (redondances à souhait) et calquée de manière à fonctionner avec un CRM propriétaire.
    Moi de mon côté je dois pondre des Etats via Access interfaçant avec la base (SQL-Server)
    Maintenant je rentre dans le vif du sujet
    Ma responsable marketing (qui est un pur produit de la blondeur des années 90 m'a demandé une requête fumeuse)
    Je dois lui restituer un Etat dans lequel la requête donne les sociétés participantes à un évènement et qui n'ont pas été demandées par un broker. En somme la demande est simple mais voila le problème
    Ma requête doit être exactement celle ci en langage humain
    "je veux toutes les sociétés participantes à l'évènement X qui n'ont été demandées par aucun broker NI attribué à aucun broker
    ma requête de départ est:
    select distinct xps0.societe from xps0
    where xps0.evt_nom like 'sm%' and xps0.statut = 'participant' and xps0.broker is null and xps0.type_so0 ='emetteurs' and xps0.template is null
    order by xps0.societe
    ce qui me donne toutes les sociétés participantes qui n'ont été attribuées à personne mais qui sont soit demandées soit pas demandées (ce qui me réduit déjà le nombre)
    Or ne plus qu'avoir que celle qui n'ont pas été demandé il faudrait que je puisse inclure la contrainte "non demandées". malheureusement pour moi "les demandes par les brokers" sont sur une autre tables qui n'est pas relié à la première. Du coup j'ai essayé d'utiliser une troisième table qui est liée au deux premières et là patatra je n'ai plus rien qui s'affiche ou si je modifie un détail je n'ai que les société demandées qui s'affichent.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Par défaut détails des fameuses tables pour éclaircir la chose
    table xps0 (table des participations)
    -evt_nom (nom de l'évènement)
    -societe
    -broker (is Null)
    -statut (participant)
    -so0_nrid (lié à la table so0 par so0.nrid)

    table so0 (table des sociétés)
    -societe
    -nrid (lié à la fois à xps0.so0_nrid et lnk0.lnk2_nrid)

    table lnk0 (table des rdv pour un évènement)
    -ref_1 (societe)
    -ref_2 (broker)
    -lieu_rv (lieu du rdv)
    -lnk2.nrid (lié à so0.nrid)

    la table lnk0 et xps0 ne sont liées que par l'intermédiaire de la table so0

    point de détail important aucune des sociétés non demandées n'est présente dans la table lnk0 (c'est là que ça coince, car si j'avais pu définir un broker bidon pour les sociétés non demandées j'aurai déjà résolu mon pb )

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 042
    Billets dans le blog
    6
    Par défaut
    Peut tu poster le DDL des tables, c'est à dire les ordres SQL CREATE TABLE pour que l'on t'aide. Rien de plus facile dans SQL Server :
    1) Ouvre Entreprise manager
    2) Clic droit sur la base, menu "toutes les tâches/Générer un script SQL"
    3) Clique sur afficher tout
    4) Bouton ajouter pour les tables que tu veut
    5) Cliquer sur bouton apercçu
    6) copier coller dans le forum developpez.com

    Merci de lire ceci : http://www.developpez.net/forums/viewtopic.php?t=32668

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Par défaut bon appétit :)
    if exists (select * from dbo.sysobjects where id = object_id(N'[SYSADM].[xps0]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [SYSADM].[xps0]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[SYSADM].[so0]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [SYSADM].[so0]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[SYSADM].[lnk0]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [SYSADM].[lnk0]
    GO

    CREATE TABLE [SYSADM].[xps0] (
    [nrid] [decimal](15, 0) NULL ,
    [rid] [varchar] (32) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [rmod] [varchar] (32) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [dmod] [datetime] NULL ,
    [template] [int] NULL ,
    [pj0_nrid] [decimal](15, 0) NULL ,
    [so0_nrid] [decimal](15, 0) NULL ,
    [pe0_nrid] [decimal](15, 0) NULL ,
    [evt_nom] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [societe] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [personne] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [statut] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [fiche_participation] [int] NULL ,
    [oto] [int] NULL ,
    [contact_principal] [int] NULL ,
    [potentialite] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [type_so0] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [type_pe0] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [broker] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [complet] [int] NULL ,
    [nbpers_J1] [int] NULL ,
    [nbpers_J2] [int] NULL ,
    [contrat_signe] [int] NULL ,
    [nbre_module] [decimal](5, 2) NULL
    ) ON [PRIMARY]
    GO

    CREATE TABLE [SYSADM].[so0] (
    [adresse_2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [code_post_2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [loc_2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [code_dep] [int] NULL ,
    [niv] [int] NULL ,
    [date_enc] [datetime] NULL ,
    [origine] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [depart] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [concur] [int] NULL ,
    [date_prev_act] [datetime] NULL ,
    [date_next_act] [datetime] NULL ,
    [num1] [float] NULL ,
    [num2] [float] NULL ,
    [num3] [float] NULL ,
    [num4] [float] NULL ,
    [num5] [float] NULL ,
    [var1] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var2] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var3] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var4] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var5] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [cli] [int] NULL ,
    [fou] [int] NULL ,
    [num6] [float] NULL ,
    [num7] [float] NULL ,
    [var6] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var7] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var8] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var9] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var10] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [susp] [int] NULL ,
    [pro] [int] NULL ,
    [dat1] [datetime] NULL ,
    [dat2] [datetime] NULL ,
    [dat3] [datetime] NULL ,
    [rid] [varchar] (32) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [rmod] [varchar] (32) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [livr] [varchar] (5) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [paymt] [varchar] (5) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [devise] [varchar] (5) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [esc] [real] NULL ,
    [livraison] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [facturation] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [type_next_act] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [type_prev_act] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [rid_next_act] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [rid_prev_act] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [copies] [real] NULL ,
    [nrid] [decimal](15, 0) NOT NULL ,
    [fact_so0_nrid] [decimal](15, 0) NULL ,
    [livr_so0_nrid] [decimal](15, 0) NULL ,
    [complement] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [bpostal] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [type] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [ca] [real] NULL ,
    [credit] [real] NULL ,
    [exmail] [int] NULL ,
    [titulaire] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [societe] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [tel1] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [fax] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [tel2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adresse] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [pays] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [loc] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [registre] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [no_tva] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [banque] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [titre] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [cd] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [code_post] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [code_sec] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [interet] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [reg_code] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [prefixe_int] [varchar] (10) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [societe_2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [depart_2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [bpostal_2] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [pays_2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [societe_3] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [depart_3] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adresse_3] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [bpostal_3] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [code_post_3] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [loc_3] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [pays_3] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [complement_2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [complement_3] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [langue] [varchar] (3) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [removed] [int] NULL ,
    [date_susp] [datetime] NULL ,
    [date_pro] [datetime] NULL ,
    [date_cli] [datetime] NULL ,
    [date_concur] [datetime] NULL ,
    [date_removed] [datetime] NULL ,
    [template] [int] NULL ,
    [template_name] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [e_mail] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [complement2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [complement2_2] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [complement2_3] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [reg_code_2] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [reg_code_3] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [dmod] [datetime] NULL ,
    [street_nb] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [street_nb2] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [street_nb3] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [web_link] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [scheduleid] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adr_line_1] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adr_line_2] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adr_line_3] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adr_line_4] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adr_line_5] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adr_line_6] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adr_line_7] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [adr_line_8] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [and_check1] [int] NULL ,
    [and_check2] [int] NULL ,
    [and_check3] [int] NULL ,
    [recordsend] [int] NULL ,
    [notesid] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [lastexport] [datetime] NULL ,
    [dat4] [datetime] NULL ,
    [var11] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var12] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var13] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [num8] [float] NULL ,
    [num9] [float] NULL ,
    [num10] [float] NULL ,
    [num11] [float] NULL ,
    [var14] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [num12] [float] NULL ,
    [num13] [float] NULL ,
    [var15] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var16] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var17] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [num14] [float] NULL ,
    [num15] [float] NULL ,
    [num16] [float] NULL ,
    [num17] [float] NULL ,
    [num18] [float] NULL ,
    [num19] [float] NULL ,
    [num20] [float] NULL ,
    [num21] [float] NULL ,
    [num22] [float] NULL ,
    [var18] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var19] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var20] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var21] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var22] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var23] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var24] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var25] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var26] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var27] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var28] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [var29] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [num23] [float] NULL ,
    [num24] [float] NULL ,
    [num25] [float] NULL
    ) ON [PRIMARY]
    GO

    CREATE TABLE [SYSADM].[lnk0] (
    [chapter_1] [int] NOT NULL ,
    [chapter_2] [int] NOT NULL ,
    [lnk1_nrid] [decimal](15, 0) NOT NULL ,
    [lnk2_nrid] [decimal](15, 0) NOT NULL ,
    [relation_name_nrid] [decimal](15, 0) NULL ,
    [relation_type] [int] NOT NULL ,
    [relation_comment] [varchar] (100) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [rid] [varchar] (32) COLLATE SQL_Latin1_General_CP850_CI_AS NOT NULL ,
    [rmod] [varchar] (32) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [nrid] [decimal](15, 0) NOT NULL ,
    [template] [int] NULL ,
    [dmod] [datetime] NULL ,
    [ref_1] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [ref_2] [varchar] (254) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [etat_rv] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [date_rv] [varchar] (15) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [heure_rv] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [lieu_rv] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [date_rel] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [titulaire] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [commentaire] [varchar] (250) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [emetteur] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [broker] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [priorite] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [date_rdv] [datetime] NULL ,
    [date_apres] [datetime] NULL ,
    [date_avant] [datetime] NULL ,
    [niveau] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [duree] [int] NULL ,
    [pj0_nrid] [decimal](15, 0) NULL ,
    [emett_pe0_nrid] [decimal](15, 0) NULL ,
    [emett_pe0_personne] [varchar] (50) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [regroupement] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
    [hoddo] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL
    ) ON [PRIMARY]
    GO

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 042
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select distinct xps0.societe 
    from   xps0 
           LEFT OUTER JOIN lnk0
                ON ???
    where  xps0.evt_nom like 'sm%' 
       and xps0.statut = 'participant' 
       and xps0.broker is null 
       and xps0.type_so0 ='emetteurs' 
       and xps0.template is null 
    order by xps0.societe
    Quelque chose comme ça, mais vos définitions de table n'ayant pas de clef, difficile de savoir ce qui fait jointure.

    J'attire votre attention sur le fait que votre modèle n'est pas conforme aux règles basiques de la modélisation, comme en atteste les colonnes de nom:
    num1 à num7, var1 à var10 etc...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Par défaut
    Je te /vous remercie de votre aide.
    Pour ce qui est de la conformité du modèle je suis pleinement d'accord avec vous.
    C'est le problème d'une base de données couplée avec un logiciel CRM propriétaire dont le fonctionnement repose sur une structure précise, et réaliser du reporting sur ce type de base relève de la folie.
    Pour exemple le logiciel utilise plus d'une cinquantaine de table et on doit à tout casser en utiliser 6 ou 7. Quand je vois ma directrice marketing qui veut évoluer vers une structure orientée web, j'imagine à la fois l'ampleur du boulot et l'enfer que ça va être pour transférer les données

    en plus une base de données sans clef primaire ou unique c'est la galère

    priez pour moi

    Merci encore

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Par défaut
    La solution que tu m'as donné donne le même résultat que ce que je trouvais d'une autre manière

    effectivement avec ta requête j'ai bien pu voir qu'aucune relation n'existe entre ces 2 tables et que par conséquent je peux toujours m'asseoir sur ma requête ça n'y changera rien

    Merci

  8. #8
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Je ne sais pas si j'ai bien compris ton probleme et ton modele relationel, mais est ce que cette requete peut t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select distinct xps0.societe from xps0 , so0
    where so0.nrid= xps0.so0_nrid and
    xps0.evt_nom like 'sm%' and xps0.statut = 'participant' and xps0.broker is null and xps0.type_so0 ='emetteurs' and xps0.template is null and 
    so0.nrid not in (select lnk2.nrid from lnk0)
    order by xps0.societe
    Bon Courage

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Par défaut
    Merci pour ta requête elle m'a permi de déterminé non pas ce que je cherchais: les participants non demandés
    mais j'ai obtenu celle qui n'ont jamais été participantes à ce jour et jamais demandées

    ce qui est déjà pas mal

    Franchement les gars merci pour vos coup de mains, quand je vois cette base de données je regrette celle de mon ancien boulot où c'était carré au possible.

  10. #10
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Citation Envoyé par Baldric de Dol
    Merci pour ta requête elle m'a permi de déterminé non pas ce que je cherchais: les participants non demandés
    mais j'ai obtenu celle qui n'ont jamais été participantes à ce jour et jamais demandées

    ce qui est déjà pas mal

    Franchement les gars merci pour vos coup de mains, quand je vois cette base de données je regrette celle de mon ancien boulot où c'était carré au possible.
    Au plaisir
    J'aurai voulu t'aider un peu plus, mais j'avoue que j'ai un peu de mal a capter le modele de données.
    Bon Courage

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Par défaut J'ai réussi mais c'est un truc de fou
    voici la fameuse requête

    SELECT a.societe, a.var3, ROUND(a.num1, 0) AS Expr1, a.titulaire, b.statut AS Smallcap, b.fax, b.Facture, c.nbdemande
    FROM (SELECT so0.nrid, so0.societe, so0.num1, so0.titulaire, so0.var3
    FROM sysadm.so0 so0
    WHERE so0.type LIKE ('emetteurs') AND so0.template IS NULL AND (so0.var3 NOT IN ('villeA', 'villeB', 'villeC') OR
    so0.var3 IS NULL) AND (so0.titulaire IN ('titulaire1', 'titulaire2', 'titulaire3'))) a LEFT OUTER JOIN
    (SELECT so0.nrid, so0.societe, xps0.statut, xps0.contrat_signe AS fax, xps0.potentialite AS Facture
    FROM sysadm.so0 so0 JOIN
    sysadm.xps0 xps0 ON so0.nrid = xps0.so0_nrid
    WHERE xps0.evt_nom LIKE ('évènement%') AND so0.type LIKE 'emetteurs') b ON a.nrid = b.nrid LEFT OUTER JOIN
    (SELECT so0.nrid, ref_1, COUNT(*) AS 'nbdemande'
    FROM sysadm.lnk0 lnk0 LEFT JOIN
    sysadm.so0 so0 ON lnk0.lnk1_nrid = so0.nrid
    WHERE lnk0.relation_name_nrid = xxxxxxxxxxxxxx AND lnk0.template IS NULL AND lnk0.lieu_rv LIKE ('evt%')
    GROUP BY so0.nrid, ref_1) c ON a.nrid = c.nrid
    WHERE (c.nbdemande IS NULL) AND (b.statut LIKE 'participant') AND (a.societe NOT IN
    (SELECT sysadm.xps0.societe
    FROM sysadm.xps0
    WHERE sysadm.xps0.evt_nom LIKE ('évènement%') AND sysadm.xps0.broker IS NOT NULL))

    Pour des raisons d'anonymat et d'info un peu sensible j'ai modifié certaines appellations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Galère connexion BDD SQL SERVER avec delphi
    Par segnac dans le forum Bases de données
    Réponses: 3
    Dernier message: 30/01/2010, 12h39
  2. Galère pour une requête SQL
    Par FoxDeltaSierra dans le forum Langage SQL
    Réponses: 27
    Dernier message: 08/07/2008, 18h01
  3. Réponses: 1
    Dernier message: 08/04/2008, 13h38
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo