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 :

Votre avis sur ma requête SQL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Par défaut Votre avis sur ma requête SQL
    Bonjour, je souhaiterais avec votre avis une requête que je viens de faire pour mon moteur de recherche multicritères (je donne la requête complète pour tous les critères sélectionnés)


    J'ai donc comme TABLE :

    - t_films
    - t_liens
    - t_genres
    - t_hebergeurs
    - t_nationalites

    On peut donc chercher un film avec une date + une nationalité + ...

    Un film possède 1 ou N liens
    Un film possède 1 et 1 seul genre
    Un film possède 1 et 1 seul nationalite
    Un lien possède 1 et 1 seul hebergeur
    Un hébergeur possède 0 ou N liens
    Une nationalité possède 0 ou N films

    Donc voici ma requête... elle fonctionne mais je préfère avoir votre avis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT * FROM t_films 
    INNER JOIN t_genres ON film_genre = genre_id 
    INNER JOIN t_nationalites ON film_nationalite = nationalite_id 
    WHERE film_genre='4' 
    AND film_nationalite='1' 
    AND film_date BETWEEN 2000 AND (2000 + 10) 
    AND (SELECT count(*) FROM t_liens INNER JOIN t_hebergeurs ON lien_hebergeur = hebergeur_id WHERE lien_hebergeur = 1 AND film_id = lien_film) > 0 
    ORDER BY film_note DESC LIMIT 0, 10
    Merci d'avance

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    1/Évitez le SELECT *. Spécifiez explicitement les colonnes que vous voulez récupérer.

    2/Si les colonnes film_genre et film_nationalite sont des entiers comme je le pense, ne mettez pas de guillemets.

    3/ Remplacez votre SELECT count(*) ... > 0 par un EXISTS...
    quel est le type de la colonne film_date ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Par défaut
    1 - Pour le SELECT(*) je sais mais pour afficher la requête ça ne le fait pas

    2 - Effectivement se sont des entiers.

    3 - merci je ne connaissais pas

    Sinon date = INT 4

    Mais au niveau de mes INNER JOIN c'est ok ?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par deli2025 Voir le message
    1 - Pour le SELECT(*) je sais mais pour afficher la requête ça ne le fait pas
    Pourquoi ?

    Sinon date = INT 4
    Pourquoi ne pas avoir appelé la colonne "film_annee" alors ?

    Mais au niveau de mes INNER JOIN c'est ok ?
    Oui.

    Autres remarques...

    C'est peut-être un choix délibéré de votre part mais un film peut avoir plusieurs nationalités.

    Idem pour l'année, si c'est celle de production. La production d'un film peut couvrir plusieurs années.

    Enfin, pour revenir à une considération purement informatique, nommez vos tables et colonnes au singulier.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Par défaut
    Oui pour l'instant les films on seulement une nationalité. Je travail sur une base de donnée existante qui n'était pas relationnel ^^

    Justement à ce propos, le(s) réalisateur(s) étaient présent directement sur la fiche du film dans un varchar....

    J'ai donc recrée une table réalisateur que j'ai alimenter depuis la table films

    La table films contient maintenant la clé du réalisateur mais je souhaiterais permettre plusieurs réalisateurs pour un film. J'ai donc crée une table réalise_par (Clé unique en varchar = id_film-id_realisateur, id_film, id_realisateur) et je souhaiterais l'alimenter automatiquement pour tous les films présent dans la table films.

    Mais franchement je ne vois pas du tout comment faire...

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO realise_par (id_film, id_realisateur)
    SELECT id_film, id_realisateur
    FROM film
    ORDER BY id_film, id_realisateur
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Votre avis sur deux requètes SQL
    Par americ dans le forum Développement
    Réponses: 6
    Dernier message: 05/11/2014, 17h25
  2. Donnez votre avis sur les articles de Developpez.com
    Par Geronimo dans le forum C++Builder
    Réponses: 13
    Dernier message: 14/01/2007, 23h00
  3. Donnez votre avis sur les articles de Developpez
    Par Anomaly dans le forum Contribuez
    Réponses: 37
    Dernier message: 29/05/2006, 22h48
  4. [Débat] Votre avis sur la section "Dev Web"
    Par Marc Lussac dans le forum Evolutions du club
    Réponses: 31
    Dernier message: 03/03/2004, 21h55
  5. Votre avis sur 1 livre SVP
    Par cab dans le forum DirectX
    Réponses: 4
    Dernier message: 17/09/2003, 11h39

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