• [^] # Re: MediaGoblin, une petite demo n'aurait pas ete de trop

    Posté par . En réponse à la dépêche Petites brèves : MediaGoblin, CloudStack, Walt Disney et G'MIC. Évalué à 4.

    select fieldA from tableA group by field2

    Postgres: select distinct on (field2) fieldA from tableA; -- ça n'est pas du SQL standard, mais ta requête MySQL ne l'est pas non plus

    Donc on rajoute un DISTINCT, mais alors ça ne marche plus avec PostgreSQL : un peu galère.

    Tout à fait logique, MySQL ne respecte pas le standard SQL donc c'est la faute à Postgresql !
    C'est pas moi qui le dit, mais la doc de MySQL: http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html

    en Postgresql ça retourne des lignes sans doublons, mais en MySQL on a des doublons. Donc on rajoute un DISTINCT, mais alors ça ne marche plus avec PostgreSQL : un peu galère.

    Soit tu tiens absolument à maintenir un seul jeu de requêtes pour chaque base de données et tu te limites au sous-ensemble fonctionnel, soit tu découples les requêtes SQL du reste du code (un peu comme la génération du HTML avec smarties), et tu adaptes celles-ci au dialecte supporté par la base. C'est typiquement le cas d'utilisation de PDO, je fournis un API commune pour manipuler divers SGBDR, et j'adapte mes requêtes SQL en fonction (une implémentation naïve serait de stocker mes requêtes SQL dans un fichier par base de données ou un poil plus malin, de cacher celles-ci en mémoire). Si tu me dis, que même çà à un coût signicatif niveau performances, j'aurais beaucoup de mal à le croire.