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 :

Explication union et order by


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut Explication union et order by
    Bonjour à tous,

    SQL 2000 /windows 2003

    Voici ma requete:

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    SELECT 
    tcPresupuesto.Emp as "n societe", 
    tcVeh.Chasis as "vin",
    tgMarca.Descrip as "marque", 
     Replace(tgModelo.Descrip, ',', '.') as "modele",
     Replace(tgVersion.Descrip, ',', '.') as "version", 
     Replace(tcVeh.Version , ',', '.')  as "code_version",
    '' as "carrosserie",
     tcVeh.Combustible "Carburant", 
     tcVeh.Puertas as "Porte",
      CONVERT(varchar,tcVeh.FecPedido,103) as "Date_Commande", 
      CONVERT(varchar,tcVeh.FecEntradaFisica,103) as "date_entree_physique",
     CONVERT(varchar,tcPresupuesto.FechaFactura,103) as "datefacture",
     REPLACE(REPLACE(REPLACE(Replace(LTRIM(RTRIM(REPLACE(REPLACE(tcvehOpcion.Descrip, CHAR(13), ' '), CHAR(10), ' '))), ',', ' '),'=',' '),'-',' '),'"','') as "Libelles_Options",
     LTRIM(RTRIM(tcvehOpcion.Opcion)) as "code_option",
    (case when tcveh.esdemo = 1 then 'VD'
    when tcveh.eskm0 = 1 then 'V0km'
    else 'VN'
    end) as typevehicule,
     case
     LTRIM(RTRIM(tgCliente.PerJuridica)) WHEN '1' then 'Societe' else 'Particulier' end as "type_client",
     tcPresupuesto.FinanImporte as "Mt_financement",
      (COALESCE(tcPresupuesto.Subtotal16,0)) As "Mt_reprise",
      '' as "marque_veh_vo",'' as "modele_veh_vo",
      (COALESCE(tcPresupuesto.Subtotal1, 0)) AS "Prix_vente_depart_HT",
       (COALESCE(tcPresupuesto.Subtotal3, 0)) AS "Option2_HT",
        (COALESCE(tcPresupuesto.Subtotal7, 0) * (-1)) AS "Remise_HT",
    	'' as "transfertdemargevo",
    	(COALESCE(tcPresupuesto.Subtotal8, 0)) as "totalfactureclient_HT"
     
     
     
    FROM tcPresupuesto
    LEFT OUTER JOIN tgVendedor ON tcPresupuesto.Emp = tgVendedor.Emp AND tcPresupuesto.Vendedor = tgVendedor.Vendedor 
    LEFT OUTER JOIN tgCliente ON tcPresupuesto.ClienteFac = tgCliente.Codigo 
    LEFT OUTER JOIN tcVeh ON tcPresupuesto.Emp = tcVeh.Emp AND tcPresupuesto.Vehiculo = tcVeh.NumInterno 
    LEFT OUTER JOIN tgMarca ON tcPresupuesto.Marca = tgMarca.Marca 
    LEFT OUTER JOIN tgModelo ON tcPresupuesto.Modelo = tgModelo.Modelo AND tcPresupuesto.Marca = tgModelo.Marca 
    LEFT OUTER JOIN tgVersion ON tcPresupuesto.Marca = tgVersion.Marca AND tcPresupuesto.Modelo = tgVersion.Modelo AND tcPresupuesto.Version = tgVersion.Version 
    LEFT OUTER JOIN tcTapiz ON tcPresupuesto.Marca = tcTapiz.Marca AND tcPresupuesto.Tapiz = tcTapiz.Tapiz 
    LEFT OUTER JOIN tcColor ON tcPresupuesto.Marca = tcColor.Marca AND tcPresupuesto.Color = tcColor.Color 
    LEFT OUTER JOIN tcGarantia ON tcGarantia.Marca = '*' AND tcGarantia.Garantia = tcPresupuesto.Garantia 
    LEFT OUTER JOIN tgCategoria ON tcPresupuesto.Categoria = tgCategoria.Categoria 
    LEFT OUTER JOIN tcVehOpcion ON tcPresupuesto.Emp = tcVehOpcion.Emp AND tcPresupuesto.Vehiculo = tcVehOpcion.NumInterno AND tcVehOpcion.TipoLinea <> 'A'
    LEFT OUTER JOIN tgClienteFac ON tcPresupuesto.Emp = tgClienteFac.Emp AND tcPresupuesto.ClienteFac = tgClienteFac.Codigo 
    LEFT OUTER JOIN tgEmpresa ON tcPresupuesto.Emp = tgEmpresa.Emp
    WHERE 
    ( tcPresupuesto.EsVO = 0) AND 
    ( tcPresupuesto.Status <> 50 ) AND
    ((tcPresupuesto.PasoFasePresupuesto = 9) OR (tcPresupuesto.PasoFaseExpediente = 9) OR (tcPresupuesto.PasoFaseVenta = 1) OR (tcPresupuesto.PasoFaseCierre = 9)) AND
    (tcPresupuesto.FechaFactura Between '07-01-2013 00:00:00.000' AND '07-01-2013 23:59:59.000')
    ORDER BY tcvehopcion.tipolinea
     
    UNION
     
    SELECT 
     
    tcVeh.Emp as "n societe", 
    case when tcVeh.Chasis = '' then tcveh.numpedidofab else  tcVeh.Chasis end as "vin",
    tgMarca.Descrip as "marque", 
     Replace(tgModelo.Descrip, ',', '.') as "modele",
     Replace(tgVersion.Descrip, ',', '.') as "version", 
     Replace(tcVeh.Version , ',', '.')  as "code_version",
    '' as "carrosserie",
     tcVeh.Combustible "Carburant", 
     tcVeh.Puertas as "Porte",
      CONVERT(varchar,tcVeh.FecPedido,103) as "Date_Commande", 
      CONVERT(varchar,tcVeh.FecEntradaFisica,103) as "date_entree_physique",
    '' as "datefacture",
     REPLACE(REPLACE(REPLACE(Replace(LTRIM(RTRIM(REPLACE(REPLACE(tcvehOpcion.Descrip, CHAR(13), ' '), CHAR(10), ' '))), ',', ' '),'=',' '),'-',' '),'"','') as "Libelles_Options",
     LTRIM(RTRIM(tcvehOpcion.Opcion)) as "code_option",
    (case when tcveh.esdemo = 1 then 'VD'
    when tcveh.eskm0 = 1 then 'V0km'
    else 'VN'
    end) as typevehicule,
     case
     LTRIM(RTRIM(tgCliente.PerJuridica)) WHEN '1' then 'Societe' else 'Particulier' end as "type_client",
    '0' as "Mt_financement",
    '0' As "Mt_reprise",
      '' as "marque_veh_vo",'' as "modele_veh_vo",
    tcvehOpcion.VentaPrecio AS "Prix_vente_depart_HT",
    '0' AS "Option2_HT",
    '0' AS "Remise_HT",
    '0' as "transfertdemargevo",
    '0' as "totalfactureclient_HT"
    FROM tcVeh
    left outer join tgEmpresa on tcVeh.Emp = tgEmpresa.Emp
    left outer join TgMarca on tcveh.Marca = tgMarca.Marca
    left outer join tgModelo on tcveh.Marca = tgModelo.Marca and tcveh.Modelo = tgModelo.Modelo
    left outer join tgVersion on tcveh.Marca = tgVersion.Marca and tcveh.Modelo = tgVersion.Modelo and tcveh.Version = tgVersion.Version
    left outer join tgPtoVenta on tcVeh.Emp = tgPtoVenta.Emp and tcVeh.PuntoVenta = tgPtoVenta.PuntoVenta 
    left outer join tccolor on tcveh.marca = tccolor.marca and tcveh.color = tccolor.color 
    left outer join tctapiz on tcveh.marca = tctapiz.marca and tcveh.tapiz = tctapiz.tapiz 
    left outer join tgVendedor on tcveh.Emp = tgVendedor.Emp and tcveh.reservaVendedor = tgVendedor.Vendedor 
    left outer join tgcliente on tcveh.reservaCliente = tgCliente.Codigo
    left outer join tcvehopcion on tcveh.emp = tcvehopcion.emp and tcveh.numinterno = tcvehopcion.numinterno
    left outer join tcvehsubstatus on tcveh.status=tcvehsubstatus.status and tcveh.substatus=tcvehsubstatus.substatus
    left outer join tcubicacion on tcveh.emp = tcubicacion.emp and tcveh.ubicacion = tcubicacion.ubicacion
    left outer join tgcategoria on tcveh.categoria = tgcategoria.categoria
    LEFT OUTER JOIN ttCortesiaCategoria ON ttCortesiaCategoria.CortesiaCategoria = tcVeh.CortesiaCategoria
    WHERE
    tcveh.EsVO = 0 and 
    tcveh.status < 30 and
    tcveh.status > 0 and 
    tcvehsubstatus.substatus in ('11','21')
    and  (Replace(tgModelo.Descrip, ',', '.')='B-MAX')
     
    ORDER BY tcvehopcion.tipolinea
    Ligne: 53 /54 /109

    J'aurai voulu savoir comment on utilise UNION et ORDER BY en meme temps ?

    Car j'ai rajouter ORDER BY dans les 2 requetes mais il m'indique "Syntaxe incorrecte vers le mot clé 'UNION'." je n'arrive pas avoir l'élément qui pose probleme .

    Merci d'avance pour votre aide

    guigui69

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 759
    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 759
    Points : 52 538
    Points
    52 538
    Billets dans le blog
    5
    Par défaut
    ORDER BY n'est pas une opération relationnelle mais cosmétique. Elle ne change rien au contenu du résultat. Elle en modifie l'apparence (cosmétique) . Cette clause ne peut donc porter que sur le résultat et non chaque requête intermédiaire, ce qui n'aurait aucun sens !
    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. "not null" avec union et order by
    Par cauriera dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/01/2007, 16h14
  2. [SQL] union et order by
    Par lazzeroni dans le forum Oracle
    Réponses: 2
    Dernier message: 11/07/2006, 16h08
  3. union et order by
    Par karimspace dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2006, 14h32
  4. [MySQL] Union et order by
    Par Klaim dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/11/2004, 16h29
  5. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02

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