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

Requêtes MySQL Discussion :

select MIN CASE [MySQL-5.7]


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut select MIN CASE
    Bonjour,

    Dans une base contenant une liste de film, je cherche a sortir le titre de chaque film dans une langue en particulier.
    Jusque là c'est simple, le problème c'est que pour certains films il se peut qu'il n'y ai pas de titre en français donc si je demande a récuperer tous les titres en français il va y avoir des trous.

    Il faut donc que lorsque le titre français n'est pas disponible, je récupère à la place le titre en anglais.

    voici un exemple simplifié de la base, on s'encombre pas des jointures pour une meilleure compréhension:
    film_id titre language status
    1 les veuves fr 0
    1 widows en 0
    2 rambo fr 0
    3 spiderman en 0
    3 spiderman fr 0
    3 spiderman cn 0
    4 Hobbit fr 1
    4 Hobbit cn 0
    4 Hobbit en 0

    En sortie il me faut ceci dans le cas ou je demande les titres en français
    film_id titre language 0
    1 les veuves fr 0
    2 rambo fr 0
    3 spiderman fr 0
    4 Hobbit en 0


    j'ai fait ça et cela a l'air de marcher si on veut sortir le 'fr' avec 'en" par defaut voir n'importe quel autre language ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT f.film_id film_id, f.titre titre, f.language lang, f.status stat,
       MIN(CASE 
    	   WHEN f.language = 'fr' THEN 1
           WHEN f.language = 'en' THEN 2
           ELSE 3 END
       ) AS preference
    FROM films f
     
    WHERE f.status = 0
     
    GROUP BY f.film_id

    mais si j'essaie de sortir en 1er 'en' puis 'fr' puis n'importe quel language:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT f.film_id film_id, f.titre titre, f.language lang, f.status stat,
       MIN(CASE 
           WHEN f.language = 'en' THEN 1
           WHEN f.language = 'fr' THEN 2
           ELSE 3 END
       ) AS preference
    FROM films f
     
    WHERE f.status = 0
     
    GROUP BY f.film_id
    ça ne va plus.


    Est ce que quelqu'un saurait comment tourner cette requête ?

    Pour ceux qui veulent faire des essai, voici de quoi recreer la table:
    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
    CREATE TABLE IF NOT EXISTS `films` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `film_id` int(11) NOT NULL,
      `titre` varchar(255) NOT NULL,
      `language` varchar(2) NOT NULL,
      `status` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;
     
    --
    -- Déchargement des données de la table `films`
    --
     
    INSERT INTO `films` (`id`, `film_id`, `titre`, `language`, `status`) VALUES
    (1, 1, 'les veuves', 'fr', 0),
    (2, 1, 'widows', 'en', 0),
    (3, 2, 'rambo', 'fr', 0),
    (4, 3, 'spiderman', 'en', 0),
    (5, 3, 'spiderman', 'fr', 0),
    (6, 3, 'spiderman', 'cn', 0),
    (7, 4, 'hobbit', 'fr', 1),
    (8, 4, 'hobbit', 'cn', 0),
    (9, 4, 'hobbit', 'en', 0);

  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 790
    Points
    30 790
    Par défaut
    Une manière de faire :
    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
    SELECT f.film_id film_id, f.titre titre, f.language lang, f.status stat
    FROM films f
    WHERE f.status = 0
        and exists
            (   select  null
                from    films sel
                WHERE   sel.status = 0
                having  MIN(CASE 
                             WHEN sel.language = 'en' THEN 1
                             WHEN sel.language = 'fr' THEN 2
                             ELSE 3 END
                         )   = CASE 
                                 WHEN f.language = 'en' THEN 1
                                 WHEN f.language = 'fr' THEN 2
                                 ELSE 3
                                END
            )
     
    GROUP BY f.film_id
    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 habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    Je ne comprends pas trop la requête pour le moment mais après l'avoir essayé je peux te dire qu'elle ne fonctionne pas correctement.

    J'obtiens 3 titres de films en anglais et il me manque "rambo" (dont le titre est seulement en français).

    Si le titre anglais n'existe pas, il faut qu'un titre sorte par defaut dans un autre language.
    En fait si on demande les titres dans un language quelconque, le 1er language par defaut est l'anglais, ensuite n'importe quel autre language si l'anglais n'existe pas non plus.
    Si par contre on demande les titres en anglais, le 1er language par defaut reste l'anglais et donc on devrait obtenir le titre dans n'importe quel autre language.

    Le tout est que l'on doit impérativement obtenir la liste complete des titres de films quelquesoit le language.

  4. #4
    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 790
    Points
    30 790
    Par défaut
    En effet, la requête que j'ai postée ne fonctionne pas correctement
    Il manque une ligne entre les lignes 7 et 8.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                WHERE   sel.status = 0
                   and sel.film_id = f.film_id
                having  MIN(CASE
    Là, ça devrait être plus proche du résultat attendu.
    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.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    En effet, là ça a l'air de fonctionner nickel.
    J'ai essayé les 3 languages dans la table et j'ai bien les résultats attendu.

    Il faut maintenant que j’étudie et comprenne le fonctionnement de cet requête pour l'adapter à ma véritable base de données et mes différents besoins.

    Merci Beaucoup pour ton aide

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    Bon finalement cette requête ne fait pas l'affaire. Elle fonctionne correctement mais elle est beaucoup trop lourde.
    Lors de mes essais sur la base de données réelle, la réponse mets 9s a arriver sur mon pc en local.

    Il faudrai redescendre a 2 ou 3s maxi. (c'est pour l'admin du site donc je peux me permettre ce délai mais 9s c'est beaucoup trop).

    Si j'ai bien compris cette requête, le problème c'est que pour chaque ligne de ma table, une sous requête est executée pour déterminer si le language corresponds aux critères de recherche.

    Je pense qu'il faudrai plutôt si c'est possible faire une sous requete qui sort toutes les lignes une fois pour toute après avoir corrigé le language souhaité de façon à ce qu'ensuite avec la requete principal, avec l'aide de GROUP BY et MIN() je puis récupérér les lignes souhaitées.


    Pour ce faire il y a un changement important dans les données a traiter qui rentre en compte.
    Dans la table de mon exemple j'utilisais des suffixes: 'fr", 'en', 'cn', etc...

    En réalité j'ai une table séparée pour les langues et elles sont numérotées.
    Autant utiliser les numéros pour accelerer le traitement.

    1 = en
    2 = fr
    3 = sp
    etc...


    L'idée serai de remplacer à la volée le numéro de la langue que je souhaite sortir en priorité par le numéro zero dans la sous requête. (le zero n'est pas utilisé dans ma table).
    Ensuite dans la requête principal je n'aurai qu'a faire SELECT min(language_id) pour récupérer les titres dans le language souhaité.
    Avec ce tri j'aurai par défaut, l'anglais puis espagnol puis etc...

    Mon problème c'est que je ne vois pas comment écrire la sous requete pour effectuer cette modification à la volée. (Est ce seulement possible ?)

    Merci d'avance

  7. #7
    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 790
    Points
    30 790
    Par défaut
    Plusieurs questions se posent avant d'aller plus loin :
    L'ordre de préférence des langues est-il immuable ?
    La table est-elle indexée ?
    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.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    Oui l'ordre de préférence de language reste fixe.

    J'affiche en fonction du language de l'utilisateur ce qui donne en général soit français soit anglais.
    Si le titre du film n'est pas dans la base dans le language souhaité, on se rabbat de préférence sur l'anglais puis français puis espagnol.
    Ceci sera défini simplement par l'id du langage dans la table langue.


    Non la table n'est pas indexé pour le moment. Je n'ai pas fait d'optimisations au niveau de la base de données. J'ai lu des choses a ce niveau là sur le net mais je me suis pas encore penché sur la question.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    Je pense que je pourrai générer une table supplémentaire 'langue_defaut" avec une colonne pour chaque langue.

    id fr en sp etc..
    1 fr en sp ..
    2 en fr en ..
    3 sp sp fr ..
    4 .. .. .. ..

    Je régénère automatiquement cette table a chaque ajout d'un language supplémentaire (c'est a dire jamais normalement), donc à la limite je peux la créer manuellement 1 fois pour toute.
    Et au lieu d'utiliser des préfixes (ici pour illustrer), j'utilise les numéros correspondant au id de ma table langue.

    Pour la requête cela sera plus simple, juste des jointures et la fonction MIN() et normalement je devrais m'en sortir je pense.

  10. #10
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    Peut être que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    with f_fr as 
    (select * from films where language = 'fr')
    , f_en as
    (select from films where language ='en')
     
    select f_fr.film_id
        , f_fr.titre 
        , case f_fr.status when 0 then f_fr.language
                                when 1 then f_en.language
                                else null
          end as language
    from f_fr left outer join f_en on f_fr.film_id = f_en.film_id
    Mais faut voir car, si le film n'est pas dispo en 'en', il apparait quand même.

    Nb: ça ressemble fort à la base sakila...

    Le moteur de stockage MyIsam est déprécié maintenant.
    J'espère que tu es bien en version >= 8.0 sinon les CTE ne sont pas acceptées.
    Le savoir est une nourriture qui exige des efforts.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    Je recrée entièrement le site d'un ami ainsi que sa base de données.
    L'ancien est en PHP 5.5 et la base tenait sur moins de 10 tables.

    Je passe en multi-langues et la nouvelle base s'étale maintenant sur 40 tables.( pas seulement a cause du multi langue)
    C'est un site sur le cinema et il y a pas mal de données différentes a gérer.

    Je ne savais pas que MyIsam était déprécié. J'avais regardé du coté de innoDB mais il ne semblai pas correspondre à mes besoins.

    Peux tu me conseiller un moteur plus adapté pour ce genre de base de données ?

    ps: non je n'utilise pas la base Sakila, la mienne est plus complète.

  12. #12
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    Citation Envoyé par Sylvercis Voir le message
    Je pense que je pourrai générer une table supplémentaire 'langue_defaut" avec une colonne pour chaque langue.
    Non. En fonction des informations données ça me semble être une erreur.

    Si on considère qu'un Id de film renvoie vers un titre et une langue (VO, avec éventuellement des sous-titrages)
    Alors un film en VF est un nouvel ID
    Cette vision est tout à fait adaptée à la gestion des supports

    Si on considère qu'un Id de film renvoie vers un contenu. Contenu pouvant avoir plusieurs titres (Guardians of the Galaxy ->Les Gardiens de la Galaxie)
    Alors il faut stocker les informations d'enregistrement de l’œuvre, dans une table enfant, les "affiches" et par affiche les langues disponibles et les sous titres
    Cette vision est tout à fait adaptée à la gestion des copywrite

    Or le fait qu'il y ait un "status", il me semble qu'on est dans la première supposition.
    Le doute pour moi est : qu'elle est la définition du mot "status" ?
    Le savoir est une nourriture qui exige des efforts.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    Citation Envoyé par Sylvercis Voir le message
    Peux tu me conseiller un moteur plus adapté pour ce genre de base de données ?
    Un moteur de base de donnée non ACID est un risque du point de vue de la cohérence des données.
    C'est pour ça que le moteur MyIsam ne respecte ni les transactions ni les FK.

    De plus depuis qu'Oracle a officiellement mis la main sur Mysql le moteur Innodb a vu ses performances nettement s'améliorer.
    Faut dire qu'Oracle était propriétaire d'Innodb depuis de nombreuses années mais la lumière ne s'est révélée à eux qu'après l'acquisition de Sun... business is business

    Le moteur InnoDB a été longtemps le moteur de prédilection sous Mysql, avant d'être le moteur par défaut à partir de la 5.5
    Le savoir est une nourriture qui exige des efforts.

  14. #14
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    La requête proposée ne fonctionne pas ?
    Le savoir est une nourriture qui exige des efforts.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    Ta réponse n'est pas très clair mais je suppose donc que tu me conseille d'utiliser le moteur innoDB à la place de MyIsam.
    Malgré mes recherche je n'ai pas trouvé d'article disant que MyIsam était déprécié (je n'ai peut être pas assez cherché).

    Je vais recomparer les avantages/inconvénient de MyIsam avec innoDB mais je pense suivre ton conseil vu que tu semble bien plus expérimenté que moi.
    D'après mes souvenir innoDB convenait plus pour les très grosses BDD et ne convenait pas pour les bases de données plus modeste comme la mienne.


    Pour ce qui est de la colonne status:
    La table donnée en exemple ci-dessus est une simplification maximal de ma base de donnée avec juste ce qui faut pour dedans pour vous permettre de comprendre les données que j'ai besoin de trier avec cette requête.
    La colonne status est utilisée dans un table contenant des articles (critique) et cette colonne permet de définir le "status" de l'article (0= dernier article validé et visible sur le site, 1= ancienne version archivée, 2=supprimé)



    Pour la table "langue_defaut" que je compte créer:
    Cette table ne sera utilisé que lors des tri avec la fameuse requête de tri pour lequel je solicite votre aide.
    Cette table fait un peu doublon dans la base de données et effectivement je ne devrai pas l'utiliser pour un autre usage que cette requete de tri.


    Dans ma base j'ai en réalité 2 tables pour stoker les données des langues:

    langues : Cette table permet d'acceder au langues par id pour par le suffixe.
    id suffixe
    1 fr
    2 en
    3 sp
    4 etc..




    langues_noms: Cette table contient les noms des langues dans tous les languages.
    id langue_id language_id nom
    1 1 1 Français
    2 2 1 Anglais
    3 1 2 French
    4 2 2 English
    5 .. .. ..

    Pour toutes les autres requetes je n'utilise que ces 2 tables.

    La table "langue_defaut" aurait pu être une table temporaire crée par une requête au moment de lancer la fameuse requête de tri mais cela prendrai trop de ressources et puis comme cette table sera toujours identique tant que je n'ajoute pas de nouvelles langues, autant la stocker définitivement.



    Pour la requete que tu as proposé:
    Est est interressante mais comme tu l'as dis toi même, elle ne convient pas et ce pour plusieurs raisons:
    - Si elle sort un titre anglais alors qu'il n'en existe pas je me retrouve avec une erreur.
    - Elle ne permet de sortir que l'anglais et le français apparemment.
    - Elle utilise CASE et WHEN ce qui me laisse penser qu'au niveau vitesse ça va ramer.

    Honnêtement je ne l'ai pas testé car sur la table test elle m'aurait sorti des erreur et niveau vitesse ça sera forcement ultra rapide.
    Et pour pouvoir sur ma base de données il faut que je la réecrive en ajoutant toutes les jointures necessaire. Sachant que le résultat sera faux aussi ce serai une perte de temps car même si elle est un peu plus rapide je ne pourrai pas l'utiliser.

    Je te remercie quand même pour temps que tu as passé a écrire cette requête pour tenter de résoudre mon problème.

    Si tu pouvais simplement me confirmer qu'il vaut mieux que j'utilise le moteur innoDB et me dire quels avantages je pourrai en tirer par rapport a myIsam ça serai super.

  16. #16
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    Choix du moteur de stockage :

    La première question est : Puis-je me passer du caractère ACID ?
    Si la réponse est NON => InnodB (ou MariadB)
    Si la réponse est OUI => MyIsam

    Définition : https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID

    Il faut faire attention car la majorité des développeurs mettent en avant la rapidité.
    Sans le savoir, ils sont dans des cas d'usage où le caractère ACID a une importance relative et surtout, ce ne sont pas eux qui font la maintenance.
    En cas de "Bug" ils mettent la main dans les données et "réparent" tout en disant qu'ils ne comprennent pas.
    Le fait que ce soit virtualisé (cloud) n'évite pas la coupure de connexion.
    Personne n'informe sur ce que sont les scripts de reprise de cohérence qu'on était obligé de relancer sur les IBM 36 (dans les années 70 et avant la notion de transaction)

    On mise tout sur l'adage : "petit, petit soucis."

    D'ailleurs peu de post sur la comparaison entre les moteurs de stockage étudient les variables matérielles (CPU, RAM, Disque).
    On imagine qu'elles sont forcément proportionnelles.
    La déclaration de foi d'ORACLE tente de faire le taff : https://www.oracle.com/partners/en/k...sam-522945.pdf mais j'avoue prendre avec un certain recul les publications éditeur.

    Si le delta de performance entre les perf quand il n'y a pas de stress est insignifiant, pouvoir s'appuyer sur un moteur qui soutient la charge est une tranquillité d'esprit.

    Et pour finir :
    Le modèle physique de tes données utilise abondamment les FK. Pourquoi utiliser un modèle qui ne les respectent pas ?
    Le savoir est une nourriture qui exige des efforts.

  17. #17
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    Citation Envoyé par Sylvercis Voir le message
    Pour la requete que tu as proposé:
    Est est interressante mais comme tu l'as dis toi même, elle ne convient pas et ce pour plusieurs raisons:
    - Si elle sort un titre anglais alors qu'il n'en existe pas je me retrouve avec une erreur.
    - Elle ne permet de sortir que l'anglais et le français apparemment.
    - Elle utilise CASE et WHEN ce qui me laisse penser qu'au niveau vitesse ça va ramer.

    Honnêtement je ne l'ai pas testé
    Ben, commence par tester.
    Le principal coût de la requête devrait être la jointure externe (en tous les cas pas le case, et de très loin !)


    - Si elle sort un titre anglais alors qu'il n'en existe pas je me retrouve avec une erreur.

    Qu'elle erreur ??

    - Elle ne permet de sortir que l'anglais et le français apparemment.
    C'était l'expression du besoin.
    En remplaçant f_fr par f_langue_base et f_en par f_langue_substitution et en utilisant des variables la requête devient générique.
    2 langues, mais générique.
    Ou alors je n'ai pas compris le besoin qui aurait pu être :
    Pour un titre donné sortir la "première" (selon un ordre dépendant de ??? la langue de l'utilisateur final???) version de langue disponible
    Si tel est le cas je pense que le résultat opérationnel ne sera pas atteint : le 3ieme choix est très aléatoire.
    En tant que français si le film n'existe pas en français ni en anglais, je préfère l'avoir en polonais plutôt qu'en espagnol, mais pas pour tous les films (c'est mon choix perso)
    En tant qu'américain si le film n'existe pas en anglais, doit-on proposer du latino ou de l'asiatique ? là le choix devient politique !
    Le choix entre 2 langues me parait correct.
    Même les scandinaves, qui parlent facilement plus de 3 langues, ce sera en VO et puis c'est tout. Pas de traduction.
    Donc un choix binaire au niveau des préférences utilisateur me semble plus opérationnel.
    Langue 1 : VO, EN, FR, ES, IT, PO, ...
    Langue 2 : VO, EN, FR, ES, IT, PO, ...
    Du coup c'est la gestion du VO qui devient tricky.


    PS : pour avoir uniquement les langues alternative en mode disponible, il faut ajouter une clause where dans la 2ieme CTE.
    Le savoir est une nourriture qui exige des efforts.

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    "Ou alors je n'ai pas compris le besoin"
    Effectivement, depuis le debut j'ai l'impression que tu focalise sur la 1ere table que j'ai fourni pour servir de base de travail alors qu'elle n'illustre pas la realité de ma base de données.

    Pour te permettre de mieux visualiser l'organisation de ma base de données, voilà la requete que j'utilise actuellement et qui me permet de sortir une liste des films possédant une critique.
    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
     
    SELECT
       	f.id film_id, ft.titre titre, DATE_FORMAT(fs.date_sortie, '%d.%m.%Y') date_sortie, c.critiques, n.notes
    FROM films f
     
    INNER JOIN films_titres ft ON ft.film_id = f.id
     
    LEFT JOIN (
    	SELECT film_id, support_id, date_sortie, duree, MIN(date_sortie) first_sortie
    	FROM films_sorties
    	GROUP BY film_id
    	) fs ON fs.film_id = f.id AND fs.date_sortie = fs.first_sortie
     
    INNER JOIN (
    	SELECT film_id, COUNT(*) critiques
    	FROM films_critiques
    	GROUP BY film_id
             ) c ON c.film_id = f.id
     
    INNER JOIN (
            SELECT film_id, COUNT(*) notes
            FROM films_notes
            GROUP BY film_id
    	) n ON n.film_id = f.id
     
    ORDER BY fs.date_sortie DESC LIMIT 30
    Je le repete mais c'est pour l'admin d'un site.

    La requete si dessus est utilisé sur ma base de données ne gérant que le français donc c'est assez simple, si le film existe dans la base dans ce cas le titre du film apparait dans la liste.
    Cette liste affiche les titres sous forme de liens qui me permette d'ouvrir l'editeur pour les données du films.

    Le site passe maintenant en multilangue.

    Si un film sort et qu'on le répertorie pour x raison d'abord en espagnol, il faut qu'un utilisateur anglais puisse accéder à la fiche de ce film pour y ajouter le titre et une critique en anglais.

    Donc pour cet utilisateur anglais, tous les titres des derniers films enregistrés seront affiché en anglais sauf celui ci car il ne sera enregistré qu'en espagnol.

    Ensuite arrive un utilisateur français, toujours pas de titre dans sa langue, il faut donc qu'un titre sorte et se sera alors en anglais car l'espagnol c'est moins compréhensible normalement.

    Le tout est que tous les films doivent impérativement apparaitre dans cette liste et ne doivent apparaitre qu'une seule fois, ceci dans la langue la plus "proche" de l'utilisateur.

    Comme tu le dis, certains français préféreront l'anglais en 2ème langue, d'autres le polonais. Peut importe, il faut définir un ordre de sortie par defaut et c'est moi qui décide pour le moment. Je pourrai ensuite ajouter du paramètrage dans l'admin pour permettre aux utilisateurs de définir eux mêmes leurs préférences.

    Donc pour le moment si il n'y a qu'un titre en chinois disponible, c'est pas grave, on l'affiche, ce qui compte c'est d'avoir un lien pour pouvoir éditer la fiche du film. Si le film est répertorié, il y aura forcement un titre dans une langue et le but de la requête est d'aller chercher ce titre quelque soit la langue tout en essayant de trouver celle qui parlera le plus à l'utilisateur.
    Je pourrais simplement créer un lien avec les numéro id des films mais ça ne serai pas parlant et afficher du vide lorsque le titre n'existe pas dans la langue de l'utilisateur c'est encore pire.
    Il me faut donc un titre et dans le langage qui corresponds le plus a l’utilisateur.

    "Si elle sort un titre anglais alors qu'il n'en existe pas je me retrouve avec une erreur. Qu'elle erreur ?? "
    Si j'ai bien compris ta requete sort dejà 2 fois le titre d'un meme film mais dans 2 language et ce n'est pas ce qu'il me faut.
    Ensuite je vais avoir des titres vides dans ma liste si tous les titres ne sont pas renseigné dans toutes les langues.
    Ce n'est pas une erreur de programmation qui va bloquer le site mais une erreur dans le sens où le resultat de la requete ne correspond pas aux resultats attendu.


    Sinon j'ai passé toutes mes tables en innoDB et j'ai noté un chargement plus rapide de mes pages (en local pour le moment). Merci du conseil.

    J'ai aussi regardé si je pouvais passer sur mysql 8.x mais aucun hebergeur ne le propose sur du mutualisé. Il faudrait que je prenne un serveur dédié et que j'y installe mysql moi même mais je ne suis même pas sur que la version gratuite de mysql 8.x en vaille la peine.
    On trouve en général des offres avec des serveurs dédié sous mariaDB, il doit y avoir une raison.

  19. #19
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    @Sylvercis : je tente de bien comprendre les tenants et les aboutissants du problème.
    Je suis désolé de me raccrocher à ce qui est publié.
    Mais je n'ai que ça.
    Et il est très difficile de reprendre soir après soir, au milieu des autres posts l'intégralité de ce qui a été dit, et encore moins de comprendre ce qui doit être abandonné ou pas dans la réflexion.
    Je peux paraître lourd.
    Désolé.

    Citation Envoyé par Sylvercis Voir le message
    voilà la requete que j'utilise actuellement et qui me permet de sortir une liste des films possédant une critique.
    Pas que : il faut
    -qu'une ligne existe dans la table films,
    -qu'il existe effectivement au moins une ligne dans la table film_critique
    -ET qu'il existe effectivement au moins une ligne dans la table film_notes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT film_id, support_id, date_sortie, duree, MIN(date_sortie) first_sortie
    FROM films_sorties
    GROUP BY film_id
    La sous requête fs ne fonctionne que grâce au mode laxiste de traitement du GROUP BY par MySQL
    je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT film_id, MIN(date_sortie) as date_sortie
    FROM films_sorties
    GROUP BY film_id
    et d'éliminer la 2ieme condition de jointure

    Par habitude j'organise mes clauses where de manière à avoir les jointures outer en dernier (et s'il y en a plusieurs l'ordre devient important)

    Par rapport au besoin exprimé où est la colonne status ?

    Citation Envoyé par Sylvercis Voir le message
    Si un film sort et qu'on le répertorie pour x raison d'abord en espagnol, il faut qu'un utilisateur anglais puisse accéder à la fiche de ce film pour y ajouter le titre et une critique en anglais.
    Comment répertorier un film sans la notion de titre ? -désolé je n'ai pas trouvé de titre espagnols pour suivre ton exemple-
    Imaginons que le film soit répertorié d'abord en français et que le titre soit "les gardiens de la galaxie" comment un admin anglais va t'il trouver ce film ?

    Citation Envoyé par Sylvercis Voir le message
    Je le repete mais c'est pour l'admin d'un site.[...] il faut qu'un utilisateur anglais puisse accéder à la fiche de ce film pour y ajouter le titre et une critique en anglais.
    Donc l'utilisateur ici est un Admin ou un internaute ?

    Citation Envoyé par Sylvercis Voir le message
    tous les titres des derniers films enregistrés seront affiché
    Si on trie par date, ça élimine le problème de titre !
    Par contre, si on s'adresse à un Admin anglais et que son 'job' est de renseigner la base alors il est plus judicieux de n'afficher que les films dont le titre n'existe pas en anglais.

    Citation Envoyé par Sylvercis Voir le message
    Cette liste affiche les titres sous forme de liens qui me permette d'ouvrir l'editeur pour les données du films. [...]
    Ensuite arrive un utilisateur français, toujours pas de titre dans sa langue, il faut donc qu'un titre sorte et se sera alors en anglais car l'espagnol c'est moins compréhensible normalement.
    Pourquoi ne pas avoir autant de liens que de langues pour une même œuvre ?

    Citation Envoyé par Sylvercis Voir le message
    Comme tu le dis, certains français préféreront l'anglais en 2ème langue, d'autres le polonais. Peut importe, il faut définir un ordre de sortie par defaut et c'est moi qui décide pour le moment. Je pourrai ensuite ajouter du paramètrage dans l'admin pour permettre aux utilisateurs de définir eux mêmes leurs préférences.
    Dans ce cas il faudra ajouter une table de "pondération" ou de "rang" qui permette d'ordonner les lignes entre elles.
    Une fonction MIN et un GROUP BY, à l'image de la sous requête fs devrait faire l'affaire.
    Le jeu des jointures va être important, autant que ce soit défini tout de suite.

    Citation Envoyé par Sylvercis Voir le message
    Donc pour le moment si il n'y a qu'un titre en chinois disponible, c'est pas grave, on l'affiche, ce qui compte c'est d'avoir un lien pour pouvoir éditer la fiche du film. Si le film est répertorié, il y aura forcement un titre dans une langue et le but de la requête est d'aller chercher ce titre quelque soit la langue tout en essayant de trouver celle qui parlera le plus à l'utilisateur.
    Je pourrais simplement créer un lien avec les numéro id des films mais ça ne serai pas parlant et afficher du vide lorsque le titre n'existe pas dans la langue de l'utilisateur c'est encore pire.
    Il me faut donc un titre et dans le langage qui corresponds le plus a l’utilisateur.
    Il me semble qu'une œuvre cinématographique est numérotée et qu'un ensemble de caractéristiques ne sont dépendantes que du titre (ou de l'affiche). Je pense par exemple aux réalisateurs et aux acteurs. Par contre les doublages, eux sont dépendants de l'affiche.
    On est bien d'accord que pour qu'une œuvre existe il nous faut au moins une affiche.
    Par contre faire une recherche par titre c'est souvent se tromper quand le titre n'existe pas de la façon de ce comment on "l'auretaugrafie"
    peut être qu'une image parle plus ?
    Nom : 2754946982_1.jpg
Affichages : 87
Taille : 40,0 Ko

    Citation Envoyé par Sylvercis Voir le message
    Si j'ai bien compris ta requete sort dejà 2 fois le titre d'un meme film [...]
    Ensuite je vais avoir des titres vides dans ma liste si tous les titres ne sont pas renseigné dans toutes les langues.
    Faux et faux
    Le savoir est une nourriture qui exige des efforts.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    Et il est très difficile de reprendre soir après soir, au milieu des autres posts l'intégralité de ce qui a été dit
    Pas de problème, je comprends très bien cette difficultée.
    C'est pour cela que j'avais simplifié au maximum le problème avec ma table exemple mais apparement cela n'a fait que compliquer les choses pour toi.


    Donc l'utilisateur ici est un Admin ou un internaute ?
    Je le répète encore mais c'est pas grave j'en profite pour apporter des précision au passage, j'ai un site internet d'un coté et une console d'administration pour ce site de l'autre coté.
    Ici je ne m'occupe que de la console d'administration. Seul les "employés" du site ont accès à cette console d'administration. On les appellera des administrateurs ou employés.


    La sous requête fs ne fonctionne que grâce au mode laxiste de traitement du GROUP BY par MySQL
    je te propose :

    Pour les propositions pour améliorer ma requete que tu as fait je ne sais pas trop quoi te répondre.
    C'est une requête que j'ai ecrit il y a pas mal de temps et qui semblait fonctionner normalement.
    La sous requete selectionne 2 dates:
    first_sortie: qui correspond a la 1ere sortie du film (généralement au cinema)
    date_sortie: celle du support selectionné (qui peut etre: cinema, dvd, vod, etc...)

    Alors peut être que cette sous requête je l'ai reutilisé en la repiquant d'une autre requête ailleurs dans l'admin et que je n'ai pas pensé à la simplifier comme que tu vient de le faire.
    Car effectivement ta proposition semble correcte, je sélectionne des données que je ne réutilise pas ensuite, ça na pas de sens.


    Par rapport au besoin exprimé où est la colonne status ?
    C'est bien tu as suivi

    Alors on va re-compliquer la chose.
    Jusque là j'ai parlé de titres de films pour simplifier le problème car j'étais toujours avec ma table exemple où il est question de titres de films.
    En réalité je n'étais pas en train de m'occuper de sortir une liste de titres de films, ça je le ferai après puis qu'avec les films il y a beaucoup de tables liées ça va être compliqué.
    Sur le site il y a plusieurs sections et j'étais actuellement sur la section "evenements".
    Cette section contient des articles sur des evenements liés au cinema.
    Par exemple une avant première du film "Marvel" a New York. Dans cet article il y des photos, videos et interviews des acteurs presents a l'evenement.
    Cet article étant a New York, l'interviewer sera americain et donc toutes les données seront en anglais. Plus tard il pourra y avoir une traduction par un "admin" français de ce même article.
    Le principe est le même qu'avec les films, il y a un numéro id pour l'evenement en interne mais a l'ecran il me faut afficher une liste de titres au départ dans le language de l'utilisateur quand c'est possible, sinon on lui donne ce qu'on a en stocke.

    Donc on va oublier les films pour le moment, si tu me trouve une solution pour les evenements je pourrai l'appliquer aux films et aux autres sections ensuite.
    Voilà ma requête actuelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    SELECT e.id id, u.pseudo pseudo, ei.titre titre, DATE_FORMAT(e.parution, '%d.%m.%Y') parution, c.nom categorie
     
    FROM evenements_items ei
     
    INNER JOIN evenements e ON e.id = ei.evenement_id
    INNER JOIN utilisateurs u ON u.id = ei.user_id
    INNER JOIN categories c ON c.categorie_id = e.categorie_id AND c.language_id = ei.language_id
     
    ORDER BY e.parution DESC LIMIT 30
    la table evenements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE IF NOT EXISTS `evenements` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id de l''evenement',
      `categorie_id` tinyint(3) UNSIGNED NOT NULL COMMENT 'id de la categorie',
      `lieu` varchar(200) NOT NULL COMMENT 'lieu de l''evenement',
      `date_debut` date NOT NULL COMMENT 'date de début de l''evenement',
      `date_fin` date NOT NULL COMMENT 'date de fin de l''evenement',
      `parution` datetime NOT NULL COMMENT 'date et heure de publication sur le site',
      PRIMARY KEY (`id`),
      UNIQUE KEY `id` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1363 DEFAULT CHARSET=utf8 COMMENT='Cette table contient tous les evenements';

    la table evenements_items:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE IF NOT EXISTS `evenements_items` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `evenement_id` int(10) UNSIGNED NOT NULL COMMENT 'id de la nouvelle',
      `user_id` int(10) UNSIGNED NOT NULL COMMENT 'id de l''auteur de la nouvelle (TABLE utilisateurs)',
      `language_id` tinyint(3) UNSIGNED NOT NULL COMMENT 'id du language (table langues)',
      `titre` varchar(200) NOT NULL COMMENT 'titre de la nouvelle dans le language indiqué dans cette clé',
      `texte` text NOT NULL COMMENT 'texte de la nouvelle dans le language indiqué dans cette clé',
      `status` tinyint(1) UNSIGNED NOT NULL COMMENT '0 = actuelle, 1 = attente validation, 2 = archivée',
      `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      UNIQUE KEY `id` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1296 DEFAULT CHARSET=utf8 COMMENT='Contient le contenu de l''evenement dans chaque languages';
    donc pour répondre a ta question sur le status, je viens de l'ajouter dans les evenements et cela sert a faire des backup des anciennes version d'un article lorsqu'il y a des modifications.
    Le but étant aussi de pouvoir trouver directement le bon article a afficher simplement avec un "where status = 0". avec un tri par date j'aurai quand même eu besoin de verifier le status.


    Pour les autres question:

    maginons que le film soit répertorié d'abord en français et que le titre soit "les gardiens de la galaxie" comment un admin anglais va t'il trouver ce film ?
    Effectivement si on fait les choses a l'envers, ça risque d'être compliqué ensuite. J'imagine qu'un espagnol aura la consigne d'indiquer egalement au moins le titre en anglais pour qu'on s'y retrouve.
    Du coup le français arrivera a retrouver le film grâce au titre original.
    Au pire lorsqu'on verra que 2 films dans la base sont en realité les même, j'aurai peut être creer un outil pour les reassembler ou je le fera manuellement.
    Je ne vois pas d'autres solutions pour le moment.
    J'ai le meme problème avec les dvd, j'espérai trouver un numéro unique officiel pour chaque dvd du commerce mais c'est la jungle apparemment, chacun sort ce qu'il veut.


    Si on trie par date, ça élimine le problème de titre !
    Par contre, si on s'adresse à un Admin anglais et que son 'job' est de renseigner la base alors il est plus judicieux de n'afficher que les films dont le titre n'existe pas en anglais.

    Le problème c'est de trouver quoi afficher si on utilise pas le titre, la seule donnée qu'on est certain de trouver c'est l'id du film.
    Personne n'est payé pour remplir la base de données au fur et a mesure. Et en anglais il n'y a rien actuellement donc je me retrouverai avec une liste d'id afficher. Retrouver un film dans une liste de numéro ça va être difficile.
    Une affiche à la limite mais elle n'est pas toujours dispo pour certains films et puis au moment de créer la fiche on devra forcement disposer de l'affiche sinon ça va poser problème.
    Le plus simple c'est quand même le titre, c'est le 1er truc qu'on renseigne normalement.


    Pourquoi ne pas avoir autant de liens que de langues pour une même œuvre ?
    Pour avoir un affichage plus clair, si on a tous les titres français dispo, autant n'afficher qu'eux ?


    Dans ce cas il faudra ajouter une table de "pondération" ou de "rang" qui permette d'ordonner les lignes entre elles.
    On en revient a ma table langue_defaut que je compte créer?
    Après la forme que tu propose est peut être différente?



    Il me semble qu'une œuvre cinématographique est numérotée
    Je ne sais pas, certain ancien film affichait des numéros mais pas tous et on ne voit plus trop ça sur le nouveaux. Je pense que chaque studio fait un peu sa sauce et que l'on ne peut pas compter sur eux pour avoir une numérotation unique.
    Je poserai la question a mon ami qui s'y connait mieux que moi.


    On est bien d'accord que pour qu'une œuvre existe il nous faut au moins une affiche.
    Par contre faire une recherche par titre c'est souvent se tromper quand le titre n'existe pas de la façon de ce comment on "l'auretaugrafie"
    peut être qu'une image parle plus ?

    Si je recherche le film "le parc des merveilles", je peux me contenter de chercher "parc" ou "merveilles" ou "le parc", ça limite pas mal la liste de résultats.
    Il y a un tri par date au depart qui sort les derniers films et ensuite on peut faire une recherche par titre.
    ça c'était pour l'admin, sur le site c'est différent, on passe d'abord par les affiches avec un tri par date puis par une recherche ecrite du titre ou par date de sortie.


    Si j'ai bien compris ta requete sort dejà 2 fois le titre d'un meme film [...]
    Ensuite je vais avoir des titres vides dans ma liste si tous les titres ne sont pas renseigné dans toutes les langues.
    Faux et faux

    ça m'étonnais aussi que tu est produit une requête pour ce genre de résultat, c'est plus tes réponses écrites qui m'ont fait pensé cela.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Select ... Where.. NOT IN
    Par backus dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/11/2005, 19h11
  2. Réponses: 5
    Dernier message: 31/10/2005, 13h25
  3. SELECT ... WHERE != ???
    Par Terminator dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/05/2005, 21h22
  4. question sur SELECT ...WHERE...IN
    Par danseur dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2004, 15h23
  5. Select * Where {}
    Par Thomad dans le forum Langage SQL
    Réponses: 14
    Dernier message: 16/10/2003, 21h27

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