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

PHP & Base de données Discussion :

requête sur 2 tables avec filtre sur date [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut requête sur 2 tables avec filtre sur date
    bonsoir,

    j'ai créé un formulaire dans lequel j'ai 2 boutons (mois, annee) + 1 bouton "envoyer"
    ma requête fait appel à 2 tables: 1 table "clients" et 1 table "documents"
    dans ma table "documents", j'ai un champ 'clientID' qui joint l'ID de ma table "clients"... jusqu'ici tout va bien

    je souhaiterai créer une requête demandant à ce qu'on m'affiche la liste des clients (clients.nom_client) en filtrant cette liste par le champ 'temps' (au format: 2010-01-13 par ex.) qui contient à la fois le mois et l'année (suis-je suffisamment clair ?).

    voici le code de ma requête que je pensais juste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT clients.ID, clients.nom_client, documents.clientID, documents.temps
    FROM clients, documents
    WHERE documents.temps LIKE %colmois% AND documents.temps LIKE %colannee% AND clients.ID=documents.clientID
    ORDER BY clients.nom_client ASC
    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    on jointure se fait avec JOIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT clients.ID, clients.nom_client, documents.clientID, documents.temps
    FROM clients JOIN documents ON clients.ID=documents.clientID
    Pour ton filtre tu peux utiliser les fonctions de date MONTH et YEAR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE MONTH(documents.temps) = valeur_mois AND YEAR(documents.temps) = valeur_annee
    LIKE et % servent pour traiter des chaines de caractères.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    bonsoir, et merci pour ta réactivité

    bon, maintenant, je m'y perd encore plus... (débutant oblige)
    je suis d'accord pour la jointure mais pour le filtre, j'ai modifié le champ 'temps' avec DATE... je n'ai plus que l'année, le mois et le jour... jusque là, je suis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE MONTH(documents.temps) = valeur_mois AND YEAR(documents.temps) = valeur_annee
    mes 2 boutons (année et mois) avait comme valeur 2010, 2011... pour les années et '-01-', '-02-'... pour les mois...
    Est-ce que je dois corriger les valeurs de mes boutons... parce que je me retrouve avec "valeur_mois" et "valeur_annee" (voir code)... quelle est la signification de ces 2 éléments ?

    je me servais de "LIKE et % servent pour traiter des chaines de caractères", parce que je ne connaissais que cette manière de récupérer les infos...
    aujourd'hui tu m'apprends à passer par un autre chemin beaucoup plus efficace à priori... mais incompréhensible aujourd'hui pour moi...
    j'ai besoin de plus de pédagogie...


    merci

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    ... j'oubliais...
    j'ai testé le champ 'temps' avec DATE comme type... tous mes futurs enregistrements me retournent maintenant comme valeur 0000-00-00 (???). Ce n'est évidemment pas souhaitable.

    le type TIMESTAMP m'offrait la possibilité d'avoir accès à "on update current timestamp" qui me permettait de créer une date de création et/ou de modification de l'enregistrement...
    j'ai oublié quelque chose ?

    merci

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu preferes utiliser un type TIMESTAMP tu peux quand même obtenir les informations du mois et de l'années
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MONTH(FROM_UNIXTIME(documents.temps)) = valeur_mois
    Ici "valeur_mois" doit être le numéro du mois, d'ou qu'il vienne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    désolé pour ce réveil matinal...
    effectivement, je suis plus à l'aise avec un TIMESTAMP...
    je médite tes commentaires...

    mais, pour ma culture personnelle... DATE reste pour moi un échec...
    mes enregistrements doivent automatiquement être datés, qu'ils le soient en mode création ou en mode modification

    je te laisse tranquille pour aujourd'hui... week-end oblige

    merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] probleme table de resultat sur 2 tables avec regroupement
    Par anofer dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/11/2010, 22h15
  2. problème sur requête sur 3 tables avec une somme
    Par tomguiss dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/12/2007, 16h44
  3. Requete SUM sur une table avec critère sur une autre
    Par wail00 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/05/2007, 16h58
  4. requete avec filtre sur la date
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/02/2007, 11h49
  5. créer TRIGGER sur 1 table avec liaison sur 2 autre table
    Par shaka84 dans le forum Développement
    Réponses: 2
    Dernier message: 11/04/2006, 11h10

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