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 :

3 Tables + Selection entre dates


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Points : 112
    Points
    112
    Par défaut 3 Tables + Selection entre dates
    Salut,

    J'essai de trouver comment avoir le resultat correct pour une requete.
    J'ai 3 tables
    1. Lote_Cliente
    2. Produccion
    3. Declaraciones


    Dans Produccion j'ai Fecha qui correspond a une date et marcado qui est une reference
    Dans Declaraciones j'ai aussi marcado et une date de debut (Fecha_inicio) et de fin (Fecha_final)

    J'ai creer une relation de marcado entre Produccion et Declaraciones.

    Maintenant j'essai de trouver la solution pour qu'il me trouve la date entre les dates de Declaraciones + marcado.

    Je laisse mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT        Lote_Cliente.cliente, Lote_Cliente.numero_lote_cliente, Lote_Cliente.numero_pedido_cliente, Lote_Cliente.fecha_preparacion, Lote_Cliente.fecha_envio, Lote_Cliente.pais_destino, Lote_Cliente.nota, 
                             Produccion.Nave, Produccion.Producto, Produccion.Producto_tipo, Produccion.Longitud, Produccion.Anchura, Produccion.Fecha, Produccion.Codigo_referencia, Produccion.Particularidad, Produccion.Lote_cliente, 
                             Produccion.Lote_medicion, Produccion.Formato, Produccion.Marcado, Produccion.Embaladora, Produccion.Numero_pale, Produccion.Kilos, Produccion.Piezas, Produccion.Seleccion, Produccion.Espesor, 
                             Declaraciones.marcado AS Expr1, Declaraciones.fecha_inicio, Declaraciones.fecha_fin, Declaraciones.qr
    FROM            Lote_Cliente INNER JOIN
                             Produccion  ON Lote_Cliente.numero_lote_cliente = Produccion.Lote_cliente INNER JOIN
                             Declaraciones  ON Produccion.Marcado = Declaraciones.marcado
    WHERE        (Lote_Cliente.numero_lote_cliente = '16/645') AND (Produccion.Fecha BETWEEN  Declaraciones.fecha_inicio and Declaraciones.fecha_fin )
    Merci d'avance.

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Et qu'est ce qui ne va pas dans le résultat ?
    Sinon il faudrait donner un jeu d'essai sur ces 3 tables + résultat attendu ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Points : 112
    Points
    112
    Par défaut
    J'ai trouver fallai rajouter nombre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT Lote_Cliente.cliente, Lote_Cliente.numero_lote_cliente, Lote_Cliente.numero_pedido_cliente, Lote_Cliente.fecha_preparacion, Lote_Cliente.fecha_envio, Lote_Cliente.pais_destino, Lote_Cliente.nota, 
                 Produccion.Nave, Produccion.Producto, Produccion.Producto_tipo, Produccion.Longitud, Produccion.Anchura, Produccion.Fecha, Produccion.Codigo_referencia, Produccion.Particularidad, 
                 Produccion.Lote_cliente, Produccion.Lote_medicion, Produccion.Formato, Produccion.Marcado, Produccion.Embaladora, Produccion.Numero_pale, Produccion.Kilos, Produccion.Piezas, 
                 Produccion.Seleccion, Produccion.Espesor, Declaraciones.qr
    FROM   Lote_Cliente INNER JOIN
                 Produccion ON Lote_Cliente.numero_lote_cliente = Produccion.Lote_cliente INNER JOIN
                 Declaraciones ON Produccion.Marcado = Declaraciones.marcado AND Produccion.Producto = Declaraciones.nombre
    WHERE (Produccion.Fecha BETWEEN Declaraciones.fecha_inicio AND Declaraciones.fecha_fin) AND (Produccion.Lote_cliente = '16/645')
    Par contre cela est lent et je me tape un timeout dans VB, comment puis je optimiser le code?

  4. #4
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Pour la lenteur ça serait plutôt au niveau MariaDB qu'il faudrait intervenir à mon avis.

    Sur Produccion.Fecha par exemple, il faudrait mettre un index ... et voir
    si les temps de réponse s'améliorent ...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par vttman Voir le message
    Pour la lenteur ça serait plutôt au niveau MariaDB qu'il faudrait intervenir à mon avis.

    Sur Produccion.Fecha par exemple, il faudrait mettre un index ... et voir
    si les temps de réponse s'améliorent ...
    Tu conseilles quoi comme index sur Fecha vu que c'est une date du type yyyy-MM-dd???
    Je connais la pas trop mais apparement pour marcado je peut mettre FULLTEXT car c'est du type varchar.

    Pou l'instant cela tarde 35 secondes sans mettre les index...

  6. #6
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Citation Envoyé par superthx Voir le message
    Tu conseilles quoi comme index sur Fecha vu que c'est une date du type yyyy-MM-dd???
    Je connais la pas trop mais apparement pour marcado je peut mettre FULLTEXT car c'est du type varchar.

    Pou l'instant cela tarde 35 secondes sans mettre les index...
    A tenter Fulltext ? De tout façon on peut facilement créer un index et le supprimer (drop index ...)
    et 35 secondes c'est monstrueusement lent ...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Points : 112
    Points
    112
    Par défaut
    je vais essayer demain dans le reseau local et non distant voir comment sa donne. Je reviens demain, merci.

  8. #8
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    A la réflexion, Il faudrait les primary key
    pour ces 3 tables ...
    Car l'index le plus judicieux est peut être un index
    composé de plusieurs champs (marcado, fecha) par exemple ...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Points : 112
    Points
    112
    Par défaut
    Bon me revoilà,

    J'ai les Primary Key sur chaques tables sur id.
    Toutes les tables sont en innodb. J'ai essayer de mettre en index différentes colonnes mais impossible.
    Sur le réseau local la requête met 1 seconde.
    C'est depuis internet que c'est lent et cela met 35 secondes.
    Je sais pas trop comment essayer de le faire bouger plus vite.
    Je vais essayé demain voir si je peux contourner la lenteur.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/06/2011, 12h14
  2. Réponses: 7
    Dernier message: 03/09/2009, 15h27
  3. Clause WHERE pour SELECT entre deux dates
    Par arogues dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/04/2008, 18h42
  4. Selection entre deux dates
    Par Kaiba dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/07/2007, 16h49
  5. [ADO Table] Filtre entre deux dates
    Par aliwassem dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/04/2007, 13h36

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