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

Développement SQL Server Discussion :

Joindre deux requêtes


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Joindre deux requêtes
    bonjour à tous
    voici mon problème j'ai deux requêtes qui fonctionnent parfaitement mais je voudrais les relier ensemble en sachant qu'elles ont un point commun
    1ere requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT VTD.ID_TIERS,VTD.TIERS_DESC,VTD.ID_TOUR,VTE.DATE_PROCHAINE
    FROM V_TOURNEE_D VTD, V_TOURNEE_E VTE
    WHERE 
     VTD.TYPE_TIER = 'CLIENT'
    AND VTD.ID_TOUR = VTE.ID_TOUR
    AND VTE.DATE_PROCHAINE = TO_CHAR(SYSDATE +1,'DD MM YYYY')
    AND VTD.ID_TOUR  NOT LIKE  'DEP%'
    AND VTD.ID_TOUR  NOT LIKE  '%SEM%'
    AND VTD.ID_TIERS = ANY ('0177','4656','0727','2655','0172','0256','0705','0710','0591','0680','0798','0699','0684','0681','0682','0677','0703','0311','0270','1138','0106','0158','0411','2289','2258','3105','0091','0139','0105','0799','0082','0303','0627','0181','0182','0188','0215','0765','0669','0419','0368','0183','1464','1463','1461','1462','0271','0272','0365','0268','2029','0363','0343','4737','0324','0321','0391','0404','0308','0307','0638','1312','0302','0099','0085','0538','0539','0390','4736','0381','0083','0084','0229','0392','0323','4711','4714','4721','4701','0372','0373','0377','0374','0520','1379','0335','0243','0375','0379','0398','0412','4712','0791','0792','0789','0788','0192','1532','1542','1543','1620','1617','1555','1962','1281','1107','1360','1361','1363','1364','1369','1366','1376','1324','1129','1151','1442','1200','1160','1171','1284','0361','1157','1131','1115','1028','1072','1070','1110','2275','1114','2312','2313','1426','1405','1410','1415','1404','1432','1417','1440','1400','1331','1077','1323','1322','1346','1347','1316','1326','1290','1396','1302','1211','1215','1241','1254','1256','1257','1258','1120','1262','2552','1243','1370','1102','1180','1188','1197','1304','1111','1105','4190','4426','4130','4065','4075','4078','4270','4230','4400','4408','4407','4410','4415','4405','4124','4112','4150','4102','4101','4090','4066','4089','4170','4160','4171','4425','4420','4141','4120','4104','4072','4076','4073','4071','4145','4093','4034','4203','4316','4340','4056','4305','4083','4217','4201','4235','4204','4211','4213','4321','4086','4085','4336','4322','4330','4220','4228','4246','4067','4240','4245','4250','4218','4219','4255','4260','4335','4345','4320','4346')
    2 ème requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT ID_ORDRE, TO_CHAR(VEC.DATE_ORDRE,'DD MM YYYY') AS QUAND ,ID_CLIENT AS CLIENT, STATUT
    FROM V_ENTETE_COMMANDE VEC
    WHERE   
     (VEC.ID_SITE_RATTACHE  =  'PLE')  AND(VEC.STATUT  <>  'CONSTRUCTION') 
    AND (VEC.ID_ORDRE  LIKE  'PV%')
    AND(VEC.ID_ORDRE_RECEPTION  IS NULL) 
    AND VEC.DATE_ORDRE >  TO_CHAR(SYSDATE +0,'DD MM YYYY')
    le point commun est vtd.id_tiers pour la 1er requête et vec.id_client pour la 2ieme requête

    merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    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
    ; WITH SR1 as (
    	SELECT DISTINCT VTD.ID_TIERS,VTD.TIERS_DESC,VTD.ID_TOUR,VTE.DATE_PROCHAINE
    	FROM V_TOURNEE_D VTD, V_TOURNEE_E VTE
    	WHERE 
    	 VTD.TYPE_TIER = 'CLIENT'
    	AND VTD.ID_TOUR = VTE.ID_TOUR
    	AND VTE.DATE_PROCHAINE = TO_CHAR(SYSDATE +1,'DD MM YYYY')
    	AND VTD.ID_TOUR  NOT LIKE  'DEP%'
    	AND VTD.ID_TOUR  NOT LIKE  '%SEM%'
    	AND VTD.ID_TIERS = ANY ('0177','4656','0727','2655','0172','0256','0705','0710','0591','0680','0798','0699','0684','0681','0682','0677','0703','0311','0270','1138','0106','0158','0411','2289','2258','3105','0091','0139','0105','0799','0082','0303','0627','0181','0182','0188','0215','0765','0669','0419','0368','0183','1464','1463','1461','1462','0271','0272','0365','0268','2029','0363','0343','4737','0324','0321','0391','0404','0308','0307','0638','1312','0302','0099','0085','0538','0539','0390','4736','0381','0083','0084','0229','0392','0323','4711','4714','4721','4701','0372','0373','0377','0374','0520','1379','0335','0243','0375','0379','0398','0412','4712','0791','0792','0789','0788','0192','1532','1542','1543','1620','1617','1555','1962','1281','1107','1360','1361','1363','1364','1369','1366','1376','1324','1129','1151','1442','1200','1160','1171','1284','0361','1157','1131','1115','1028','1072','1070','1110','2275','1114','2312','2313','1426','1405','1410','1415','1404','1432','1417','1440','1400','1331','1077','1323','1322','1346','1347','1316','1326','1290','1396','1302','1211','1215','1241','1254','1256','1257','1258','1120','1262','2552','1243','1370','1102','1180','1188','1197','1304','1111','1105','4190','4426','4130','4065','4075','4078','4270','4230','4400','4408','4407','4410','4415','4405','4124','4112','4150','4102','4101','4090','4066','4089','4170','4160','4171','4425','4420','4141','4120','4104','4072','4076','4073','4071','4145','4093','4034','4203','4316','4340','4056','4305','4083','4217','4201','4235','4204','4211','4213','4321','4086','4085','4336','4322','4330','4220','4228','4246','4067','4240','4245','4250','4218','4219','4255','4260','4335','4345','4320','4346')
    ) , SR2 as (
    	SELECT ID_ORDRE, TO_CHAR(VEC.DATE_ORDRE,'DD MM YYYY') AS QUAND ,ID_CLIENT AS CLIENT, STATUT
    	FROM V_ENTETE_COMMANDE VEC
    	WHERE   
    	 (VEC.ID_SITE_RATTACHE  =  'PLE')  AND(VEC.STATUT  <>  'CONSTRUCTION') 
    	AND (VEC.ID_ORDRE  LIKE  'PV%')
    	AND(VEC.ID_ORDRE_RECEPTION  IS NULL) 
    	AND VEC.DATE_ORDRE >  TO_CHAR(SYSDATE +0,'DD MM YYYY')
    )
    select *
    from SR1
    JOIN SR2 
    	on SR1.ID_TIERS = SR2.ID_CLIENT
    Ta façon de faire les jointures datent d'il y a 10 ans : Apprends à te servir de INNER JOIN comme le veut la norme SQL

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    J'espère que VTE.DATE_PROCHAINE et VEC.DATE_ORDRE sont bien de type date.
    Si oui, il faut modifier le code en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AND VTE.DATE_PROCHAINE = trunc(SYSDATE +1)
    AND VEC.DATE_ORDRE >  trunc(SYSDATE)
    PS : c'est plutôt du Oracle que du SqlServer

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Joindre deux requetes
    Bonjour,
    Merci "7gyY9w1ZY6ySRgPeaefZ" poour ta reponse rapide mais j'ai un petit soucis , comme c'est un requeteur simplifié integre a une application de gestion d'entrepot, quand je copie le code et que je veux executé la requete j'ai le message suivant " Seules les requêtes de sélection sont autorisées." je suppose que c'est le with qui ne va pas . aurais tu une solution?
    En ce qui concerne ta remarque sur ma maniere de "codé" je prendrai cela pour un compliment a car il y a un mois a part de nom je connaissais rien en sql , et si tu as des tutos ou des sites a visiter et bien je suis preneur

    merci encore

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut oracle ou sql
    Citation Envoyé par skuatamad Voir le message
    J'espère que VTE.DATE_PROCHAINE et VEC.DATE_ORDRE sont bien de type date.
    Si oui, il faut modifier le code en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AND VTE.DATE_PROCHAINE = trunc(SYSDATE +1)
    AND VEC.DATE_ORDRE >  trunc(SYSDATE)
    PS : c'est plutôt du Oracle que du SqlServer
    Bonjour,
    Effectivement je pense que c'est du oracle mais j'en suis pas sur , y aurait il un moyen de le verifier ?

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    C'est du pur Oracle.

    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/ * * * * *

Discussions similaires

  1. Scinder Deux requetes
    Par hugo69 dans le forum Access
    Réponses: 2
    Dernier message: 21/10/2005, 15h56
  2. Réponses: 7
    Dernier message: 14/10/2005, 20h00
  3. division des resultats de deux requetes
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 14/10/2005, 10h42
  4. fusionner le résultat de deux requetes
    Par sami_c dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/05/2004, 09h56
  5. jointure entre deux requete
    Par Youssef dans le forum Langage SQL
    Réponses: 21
    Dernier message: 15/01/2004, 15h13

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