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

Symfony PHP Discussion :

faire un subselect


Sujet :

Symfony PHP

  1. #1
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut faire un subselect
    Bonjour

    J'ai besoin de transformer cette requête générée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT *
    FROM avl_event
    JOIN avl_vehicle ON (avl_event.VEHICLE_ID=avl_vehicle.ID)
    WHERE avl_vehicle.COMPANY_ID=2
      AND (avl_event.CREATED_AT>='2010-01-05 05:00:00'
      AND avl_event.CREATED_AT<='2010-01-06 04:59:00')
      AND avl_event.EVENT_TYPE_ID IN (30,31)
      AND avl_event.VEHICLE_ID=avl_vehicle.ID
    ORDER BY UPPER(avl_vehicle.NAME) ASC,avl_event.VEHICLE_ID ASC,avl_event.CREATED_AT ASC,avl_event.ID ASC
    Comme ceci :

    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
    (
      SELECT *
      FROM avl_event
      WHERE avl_event.CREATED_AT>='2009-12-29 05:00:00'
        AND avl_event.CREATED_AT<='2010-01-06 04:59:00'
    ) event
    JOIN avl_vehicle
      ON  event.VEHICLE_ID=avl_vehicle.ID
    WHERE avl_vehicle.COMPANY_ID=2
      AND event.EVENT_TYPE_ID IN (30,31)
    ORDER BY UPPER(avl_vehicle.NAME) ASC,event.VEHICLE_ID ASC,event.CREATED_AT ASC,event.ID ASC
    J'ai trouvé de la documentation ici :
    http://snippets.symfony-project.org/snippet/75

    Mais il semble que ca ne marche que sur les clause where, et non sur les jointures. Est ce que vous savez comment je pourrais faire ?

    La première requête prend 12 sec, la seconde 0.5 (elle utilise le bon index...)

    Merci

    Pierre

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Pas vraiment d'idée constructive

    As-tu regardé sur le site de doctrine ?

    Bonne année 2010
    Michel
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2002, 08h31
  2. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06
  3. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  4. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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