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

Langage SQL Discussion :

requete sql plutot pas facile a faire


Sujet :

Langage SQL

  1. #21
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    C'est parce que l'alias de table n'est pas bon.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * 
    FROM clients c
    LEFT OUTER JOIN ( 
      SELECT DISTINCT s.id_user, s.date_relance_service
      FROM service s
    ) tmp ON c.id = tmp.id_user
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  2. #22
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    vraiment desole mais ta requete a fais planter mysql....


    m'enerve car je comprends pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM clients
    	JOIN (
    		SELECT DISTINCT date_relance_service, id_user
    		FROM service
    	) td
    		ON clients.id=td.id_user

    marche alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * 
    FROM clients c
    LEFT OUTER JOIN ( 
      SELECT DISTINCT s.id_user, s.date_relance_service
      FROM service s
    ) tmp ON c.id = tmp.id_user
    fait tout planter!
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

  3. #23
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    et ceci ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * 
    FROM clients 
    LEFT OUTER JOIN ( 
      SELECT DISTINCT id_user, date_relance_service
      FROM service 
    ) tmp ON clients.id = tmp.id_user

  4. #24
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Vu qu'il y a pas mal de colonnes et qu'elles sont presque toutes en VARCHAR(255), ce qui n'est pas du tout optimisé je le rappelle, il serait judicieux d'éviter le SELECT * et de ne prendre que les colonnes utiles. Ca limiterait déjà pas mal le volume d'informations à récupérer.

    Quand tu dis que ça plante, ça fait quoi précisément ? Un message d'erreur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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. #25
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    desole cybner, mais ca fais pareil...

    na, pas de message d'erreur, juste que ca tourne pendant....je sais pas, plus de 2 minutes...


    mais pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT clients.*
    FROM clients
    	JOIN (
    		SELECT DISTINCT date_relance_service, id_user
    		FROM service
    	) td
    		ON clients.id=td.id_user
    mais ca, c'est un code propre non?



    ca selectionne bien tous les champs clients autant de fois que c.id=s.id_user si la date_relance_service n'est pas egale
    mais comment faire pour selectionner tout les champs clients ET service autant de fois que c.id=s.id_user si la date_relance_service n'est pas egale siouplais?

    merci
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

  6. #26
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par kaking Voir le message
    faut dire que ma table clients comporte 10000 unités et ma tables service 20000.
    10 000 x 20 000 = 200 000 000 millions de tuples à analyser. Pas étonnant que ça prenne du temps ! Surtout avec des colonnes en VARCHAR(255) partout !

    Il faudrait faire un EXPLAIN de la requête complète pour voir ce que ça donne, comment MySQL la traite.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  7. #27
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    3 choses :

    la premiere, merci de continuer a repondre, c'est sympa.

    la deuxieme, je sais pas comment faire-ni ce que c'est- un explain, et les champs de ma bdd, c'est pas moi qui decide leur type


    troisiemement,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT clients.*
    FROM clients
    	JOIN (
    		SELECT DISTINCT date_relance_service, id_user
    		FROM service
    	) td
    		ON clients.id=td.id_user
    fait tres bien ce que je voudrais a part que ca selectionne uniquement les champs clients, or moi je voudrais que ca selectionne AUSSI les champs service....



    comment faire siouplais?





    ha oui, autre chose de sympa aussi : pourquoi quand je fais cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT clients.*
    FROM clients
    	JOIN (
    		SELECT DISTINCT date_relance_service, id_user
    		FROM service
    	) td
    		ON clients.id=td.id_user
    en dur dans mon mysql, rien ne se passe : y'a meme pas marqué 'resultat non trouvé' ou 'erreur' ou ca rame..... y'a simplement rien qui se passe....la boite sql se ferme et se recharge.....






    je veux mourir....
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

  8. #28
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    ca y'est, j'ai trouvé un autre moyen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("CREATE TEMPORARY TABLE dist_serv AS SELECT DISTINCT date_relance_service, id_user FROM service") or die(mysql_error());

    je créé dabord une table ou ce trouve ce que je veux prendre de la table service : une date relance service unique par id_user

    puis je lie les tables comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT c.*,ds.* FROM clients c INNER JOIN dist_serv ds ON c.id=ds.id_user

    et 'oilou! ca me donne autant de client qu'il a de date_relance differentes merci de votrtre aide, ca m'a super bien mis sur la piste!!!
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Requete SQL sur un dataset, comment faire ?
    Par Shypster dans le forum C#
    Réponses: 5
    Dernier message: 07/07/2010, 08h49
  2. [MySQL] Requete SQL Fomulaire Html FACILE A TRAITER
    Par bienvenue50 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 29/03/2010, 16h56
  3. Réponses: 3
    Dernier message: 26/03/2008, 18h47
  4. [Requete SQL]Est-ce possible de faire cela en SQL sous access 2000 ?
    Par titof90 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/05/2007, 15h39
  5. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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