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 :

Trouver les 3 derniers produits de chaque type


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut Trouver les 3 derniers produits de chaque type
    Bonjour,
    Cette requête me donne tous les produits de ma base.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM produits p INNER JOIN types_produits tp ON tp.id_produits=p.id INNER JOIN types t ON t.id=tp.id_types
    J'aimerais uniquement faire ressortir les trois derniers produits "ORDER BY p.id DESC" pour chaque type de produits "t.id"

    Par avance merci.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Comme ça ?
    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
    WITH    selection
        AS  (   SELECT  *
                    ,   ROW_NUMBER() OVER (PARTITION BY t.id ORDER BY p.id DESC)    AS ordre 
                FROM    produits p 
                    INNER JOIN 
                        types_produits tp 
                        ON  tp.id_produits = p.id
                    INNER JOIN 
                        types t 
                        ON  t.id=tp.id_types
            )
    SELECT  *
    FROM    selection
    WHERE   ordre   <= 3
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Merci, ça ressemble à ce que je cherche.
    La requête semble bonne pourtant j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'selection
        AS  (   SELECT  *
                    ,   ROW_NUMBER() OVER (PARTITI' at line 1
    Une idée ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    ATTENTION... la requête de AL_24 n'est a mon avis pas bonne ! En effet :

    Citation Envoyé par al1_24 Voir le message
    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
    WITH    selection
        AS  (   SELECT  *
                    ,   ROW_NUMBER() OVER (PARTITION BY t.id ORDER BY p.id DESC)    AS ordre 
                FROM    produits p 
                    INNER JOIN 
                        types_produits tp 
                        ON  tp.id_produits = p.id
                    INNER JOIN 
                        types t 
                        ON  t.id=tp.id_types
            )
    SELECT  *
    FROM    selection
    WHERE   ordre   <= 3
    ;
    En effet s'il y a des premiers ex-æquo ces derniers n'apparaîtrons pas. Remplacez ROW_NUMBER() par RANK() et tout rentrera dans l'ordre. Il n'est en effet pas rare qu'il y ait plusieurs vainqueur dans une compétition, et il faut faire avec, sinon c'est l'injustice !

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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    J'obtiens la même erreur avec RANK()

    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
    WITH    selection
        AS  (   SELECT  *
                    ,   RANK() OVER (PARTITION BY t.id ORDER BY p.id DESC)    AS ordre 
                FROM    produits p 
                    INNER JOIN 
                        types_produits tp 
                        ON  tp.id_produits = p.id
                    INNER JOIN 
                        types t 
                        ON  t.id=tp.id_types
            )
    SELECT  *
    FROM    selection
    WHERE   ordre   <= 3
     
    MySQL a répondu: Documentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'selection
        AS  (   SELECT  *
                    ,   RANK() OVER (PARTITION BY ' at line 1

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    C'est normal : MySQL ne connait ni les CTE ni les fonctions analytiques de regroupement... définies dans la norme SQL de 2003.
    Et je dois avouer que, depuis le temps que j'utilise des SGBD évolués, je ne sais plus faire sans ces fonctions
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    J'ai remplacé WITH par CREATE TEMPORARY TABLE et maintenant j'ai l'erreur suivante :

    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
    CREATE TEMPORARY TABLE selection
        AS  (   SELECT  *
                    ,   RANK() OVER (PARTITION BY t.id ORDER BY p.id DESC)    AS ordre 
                FROM    produits p 
                    INNER JOIN 
                        types_produits tp 
                        ON  tp.id_produits = p.id
                    INNER JOIN 
                        types t 
                        ON  t.id=tp.id_types
            )
    SELECT  *
    FROM    selection
    WHERE   ordre   <= 3
     
    MySQL a répondu: Documentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(PARTITION BY t.id ORDER BY p.id DESC)    AS ordre
                FROM    produit' at line 3
    On dirait que MySQL ne reconnait pas non plus PARTITION BY ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Sur MySQL j'arrive à obtenir ce que je souhaite avec la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT *
    FROM produits p 
    INNER JOIN types_produits tp ON tp.id_produits=p.id 
    INNER JOIN types t ON t.id=tp.id_types 
    WHERE
    (
        SELECT COUNT(*)
        FROM produits p2 
        INNER JOIN types_produits tp2 ON tp2.id_produits=p2.id 
        INNER JOIN types t2 ON t2.id=tp2.id_types 
        WHERE tp.id_types=tp2.id_types AND p.id < p2.id
    ) < 3
    ORDER BY t.id, p.id DESC
    Mais c'est un peu foutraque comparé aux requêtes proposées plus haut, est ce la seule solution sur MySQL ?

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Hélas oui et de toutes façons elle risque de s'avérer fausse si une de vos table n'a pas de clef.

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

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Oui c'est pour ça que j'essayais de trouver une autre solution...

    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
    CREATE TEMPORARY TABLE selection
        AS  (   SELECT  *
                    ,   RANK() OVER (PARTITION BY t.id ORDER BY p.id DESC)    AS ordre 
                FROM    produits p 
                    INNER JOIN 
                        types_produits tp 
                        ON  tp.id_produits = p.id
                    INNER JOIN 
                        types t 
                        ON  t.id=tp.id_types
            )
    SELECT  *
    FROM    selection
    WHERE   ordre   <= 3
     
    MySQL a répondu: Documentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(PARTITION BY t.id ORDER BY p.id DESC)    AS ordre
                FROM    produit' at line 3
    Mais si je comprends bien avec MySQL il n'est pas possible d'utiliser la requête ci-dessus ?

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par guest4541 Voir le message
    Oui c'est pour ça que j'essayais de trouver une autre solution...

    MySQL a répondu: Documentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(PARTITION BY t.id ORDER BY p.id DESC) AS ordre
    FROM produit' at line 3[/CODE]

    Mais si je comprends bien avec MySQL il n'est pas possible d'utiliser la requête ci-dessus ?
    Non, MySQL à une niveau de SQL le plus bas de tous les SGBDR. Il ne respecte même pas la norme SQL2 d 1992 ! En particulier pas de schéma SQL, de contrainte CHECK, de CTE, de fonction de fenêtrage, d'ordonnancement, etc....

    Donc des performances de merde si vous devez faire cela par le jeux de sous requêtes, et à condition que ce soit possible !

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

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Merci pour ces précisions.

    Je suis étonné d'apprendre ça dans la mesure où MySQL fait partie des "classiques" pour mettre en relation PHP avec une bdd via phpMyAdmin, n'est ce pas le cas ?

    J'imagine qu'il y a d'autres solutions avec des serveurs dédiés mais sur les hébergements mutualisés j'ai l'impression de ne pas avoir d'autres choix que d'utiliser MySQL... Même chose en local avec wamp et easyPHP... Du coup je pars du principe que la plupart des sites sont basés sur MySQL, n'est ce pas le cas ?

    Si je ne me trompe pas, comment se fait-il que MySQL soit largué à ce point ?

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par guest4541 Voir le message
    Merci pour ces précisions.

    Je suis étonné d'apprendre ça dans la mesure où MySQL fait partie des "classiques" pour mettre en relation PHP avec une bdd via phpMyAdmin, n'est ce pas le cas ?
    MySQL est à l'origine une entreprise suédoise de nom MySQLAB dont le créateur à eu la brillante idée en bon vendeur de d'intégrer son produit aux principales distributions Linux profitant de la vague du libre. Mais MySQL n'est ni libre, ni ouverte ! Il faut payer sous une forme ou une autre. C'est aujourd'hui la propriété d'Oracle qui espère faire du chiffre avec. La licence stipule que l'on doit payer en nature ou en numéraire. En nature en livrant son code à l'éditeur, autrement dit Oracle.
    Bref l'origine de MySQL un bricoleur du dimanche qui s'est fait des sous en revendant son outil à Sun...

    J'imagine qu'il y a d'autres solutions avec des serveurs dédiés mais sur les hébergements mutualisés j'ai l'impression de ne pas avoir d'autres choix que d'utiliser MySQL... Même chose en local avec wamp et easyPHP...
    Non, il y a PotsGreSQL qui est un vrai libre mais les hébergeurs sont effectievement plus rare car il n'y a pas de commerciaux pour pousser au cul les hébergeurs à faire des offres avec PG !

    Du coup je pars du principe que la plupart des sites sont basés sur MySQL, n'est ce pas le cas ?
    ça dépend de quels sites on parle. Aucun site professionnel n'utilise MySQL. Si l'on prend le top 10 des sites de vente français, c'est à 90% du SQL Server (fnac.com, cdiscount, ventreprivées, sarenza... ) à 9% du Oracle (tgv.com...) et 1 % du PG (leboncoin...),

    Si je ne me trompe pas, comment se fait-il que MySQL soit largué à ce point ?
    Un bon SGBDR c'est entre 1000 et 1200 années homme en R&D.... Un bricoleur seul dans son coin c'est 30 au mieux ! Ceci explique cela.... Et il n'y a pas que le niveau du SQL qui est à la ramasse. Il y a l'optimiseur, le moteur de stockage... ce qui le rend inexploitable pour des besoins professionnels. Pense par exemple qu'il n'existe pas de possibilité de faire des sauvegardes à chaud consistantes.... sauf à utiliser un outil Oracle vendu au prix fort (quelques dizaines de milliers d'euros). Pour info, un de mes clients mettait 30 heures pour sauvegarder sa base MySQL en version gratuite de 600 Go... Il avait ensuite le choix suivant :
    - acheter le module de sauvegarde Oracle...
    - migrer vers SQL Server.
    Le choix a été vite fait !
    Après migration vers SQL Server, la sauvegarde en mode compressée mettait 18 minutes ! Et je te parle pas des fonctionnalités tant SQL que d'Admin

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

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Merci je comprends mieux maintenant.

    Je reviens sur MySQL, est ce qu'une bdd MyISAM ou InnoDB permettent d'utiliser des requêtes plus ou moins complexes ?

    Concernant SQL Server, j'imagine que ça s'installe sur des serveurs dédiés et qu'il faut payer une licence ?
    Est ce qu'on peut administrer les bdd à l'aide d'une interface web comme sur phpmyAdmin ou est ce que ça s’exécute principalement via des lignes de commande ?

  15. #15
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par guest4541 Voir le message
    Merci je comprends mieux maintenant.

    Je reviens sur MySQL, est ce qu'une bdd MyISAM ou InnoDB permettent d'utiliser des requêtes plus ou moins complexes ?
    Non... dans les SGBDR le moteur de stockage et le moteur de requête sont deux éléments distinct, le moteur de requête travaillant en logique pure sur des données en mémoire. Le niveau de SQL est donc le même quelque soit le moteur de stockage, mais il existe des limitations plus ou moins importante sur certains aspects logique obligeant à des "dessous" physiques tel que les index...

    Concernant SQL Server, j'imagine que ça s'installe sur des serveurs dédiés et qu'il faut payer une licence ?
    Non... SQL Server existe en de multiples versions. Les versions professionnelles (standard, BI, Enterprise) s'installent sur des OS Server. Les versions gratuites (LocalDB, CE, Express...) s'installent sur n'importe quel types de machine, desktop compris et peuvent être utilisées en exploitation (Les bases Express étant limitées à 10 GO x 32 760 bases soit 120 TO...). Enfin la version Developper (gratuite) équivalente à la version Enterprise, s'installe sur du desktop comme sur du serveur, mais ne peut pas être utilisée pour l'exploitation, sont but est d'être utilisé en développement, test, recette, qualification...

    Est ce qu'on peut administrer les bdd à l'aide d'une interface web comme sur phpmyAdmin ou est ce que ça s’exécute principalement via des lignes de commande ?
    Par d'outil web, ce serait trop complexe et peu riche, mais une console de développement et d'admin graphique qui s’appelle SQL Server Management Studio (SSMS) gratuite elle aussi...

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

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Merci pour toutes ces précisions très instructives.
    Résolu !

  17. #17
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Hélas oui et de toutes façons elle risque de s'avérer fausse si une de vos table n'a pas de clef.

    A +
    "Avérer" signifie : révéler vrai
    Cf : http://www.cnrtl.fr/definition/avérer
    ou encore https://fr.wikipedia.org/wiki/Pl%C3%A9onasme

    Du coup "s'avérer vrai" est un pléonasme et "s'avérer faux" est une contradiction

  18. #18
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    "Avérer" signifie : révéler vrai
    Cf : http://www.cnrtl.fr/definition/avérer
    ou encore https://fr.wikipedia.org/wiki/Pl%C3%A9onasme

    Du coup "s'avérer vrai" est un pléonasme et "s'avérer faux" est une contradiction
    C'est bien ce que je dit :
    Il est vrai que c'est faux !!!

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

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/02/2013, 17h51
  2. [XL-2007] trouver les quantité de produits pour atteindre une somme
    Par teto36 dans le forum Excel
    Réponses: 5
    Dernier message: 14/06/2010, 00h12
  3. Réponses: 11
    Dernier message: 05/12/2008, 10h31
  4. Réponses: 15
    Dernier message: 28/02/2007, 10h00
  5. Copie dernier élément de chaque type, sur la feuille suivante
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 26/07/2006, 09h59

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