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 PostgreSQL Discussion :

Requete SQL dans laquelle je désire incorporé la date d'anniversaire de mes clients


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Entrepreneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Par défaut Requete SQL dans laquelle je désire incorporé la date d'anniversaire de mes clients
    Bonjour.
    Je vous expose ma requête sur ce forum en espérant être sur la bonne page, n'étant pas un habitué des forums.
    En quelques mots voici ma situation.
    J'ai pour objectif de faire une publicité sur FB, et j'ai besoin d'une requete SQL particulière pour réaliser un choix clientèle ( lookalike ) qui correspond à ma base de données 2014-2020.
    Je travaille sur mac et ma boutique est sous Prestashop 1.7, lorsque je vais dans mon onglet commande et que j'exporte vers le gestionnaire SQL mes données la formule me donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SELECT SQL_CALC_FOUND_ROWS a.`id_order`, `reference`, `total_paid_tax_incl`, `payment`, a.`date_add` AS `date_add`
    , 
    		a.id_currency,
    		a.id_order AS id_pdf,
    		CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `customer`,
    		osl.`name` AS `osname`,
    		os.`color`,
    		IF((SELECT so.id_order FROM `ps_orders` so WHERE so.id_customer = a.id_customer AND so.id_order < a.id_order LIMIT 1) > 0, 0, 1) as new,
    		country_lang.name as cname,
    		IF(a.valid, 1, 0) badge_success, shop.name as shop_name 
    FROM `ps_orders` a 
     
     
    		LEFT JOIN `ps_customer` c ON (c.`id_customer` = a.`id_customer`)
    		INNER JOIN `ps_address` address ON address.id_address = a.id_address_delivery
    		INNER JOIN `ps_country` country ON address.id_country = country.id_country
    		INNER JOIN `ps_country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = 1)
    		LEFT JOIN `ps_order_state` os ON (os.`id_order_state` = a.`current_state`)
    		LEFT JOIN `ps_order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = 1) 
     LEFT JOIN `ps_shop` shop
                                ON a.`id_shop` = shop.`id_shop` WHERE 1  AND a.id_shop IN (1) 
     
     ORDER BY a.id_order DESC
    Cependant un élément important me manque, l'anniversaire, la date de naissance des mes clients ou leur âge, est-ce possible ?

    Après avoir passé la journée à chercher sur le net, fait des tests hasardeux et autres incantations magiques, je ne peux que me résoudre à vous embêter un peu et demander votre aide.
    Merci à vous pour votre temps.
    Au plaisir de vous lire.
    Hervé.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 654
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Pour la date de naissance, pas de miracle, il faut la stocker dans la BDD

    Pour l'âge, PG propose la fonction age(timestamp, timestamp), applicable uniquement si vous avez la date de naissance bien sur
    cf. https://www.postgresqltutorial.com/postgresql-age/

  3. #3
    Membre régulier
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Entrepreneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Par défaut
    Bonjour escarfigue,

    Pour la date de naissance, pas de miracle, il faut la stocker dans la BDD
    Merci de ta réponse, bon je ne sais pas ce qu'est un BDD (Behavior Driven Development c'est bien cela n'est ce pas ?), en fouinant sur google, ce que j'en comprends c'est qu'il s'agit de la suite logique de mon code.
    Et j'avoue que je voudrais un miracle , je tente depuis une heure de tester différents endroits ou mettre la commande age(timestamp, timestamp), dans mon code sql mais à chaque test sur mon Back Office ça ne marche pas.

    Pour l'âge, PG propose la fonction age(timestamp, timestamp), applicable uniquement si vous avez la date de naissance bien sur
    cf. https://www.postgresqltutorial.com/postgresql-age/
    J'ai la date de naissance, toutes ces données étant mes anciens clients, la plupart ont remplis ce champ.
    Le plus difficile étant à présent d'installer cette requête dans le SQL afin que chaque clients aient sa date de naissance attribué dans mon tableau.

    Est ce qu'il te serait possible de m'indiquer où je dois mettre cette instruction dans mon code sql ( BDD si je comprends bien ), car depuis hier soir je fais du copier coller entre deux tableaux numbers... il ne m'en reste plus que 280 à faire glps... .
    Allez je m'y remets...
    Merci en tout cas d'avoir pris le temps de jeter un oei à mon problème, bon vendredi !
    Hervé.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Dans votre requête SELECT !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre régulier
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Entrepreneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Par défaut
    Bonjour SQL PRO, merci pour votre intervention.
    Dans votre requête SELECT !
    Je comprends bien, mais, en fait ou la placer dans ma requête SELECT pour l'âge ?

    Le code SQL que j'ai coller est en fait le résultat d'un seul effort de ma part, celui d'appuyer sur un bouton de mon site qui à transformé toutes les données de mes commandes ou de mon fichier client en une requête SQL.

    Je suis totalement démuni face à ce langage, et j'en suis navré.

    J'ai fini manuellement l'association de mes 580 clients, mais j'aimerai arriver au bout de ma démarche avec votre aide, si vous me le permettez.

    Je vais donc tenter d'insérer la fonction age(timestamp, timestamp ), dans ma requête SELECT juste après SELECT et je vous tient informer.

    Si vous avez quelques infos supplémentaires pour que je comprenne ou mettre cette fonction j'en serai ravi.
    Merci de votre aide en tout cas.
    Hervé.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 654
    Billets dans le blog
    10
    Par défaut
    BDD comme Base De Données

    Par exemple, avec ce jeu d'essais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with t1 (NumCli, NomCli, DdnCli) as
        (select 001, 'Dupond', '1961-02-20'   union all
         select 002, 'Durand', '1985-05-11'   union all
         select 003, 'Martin', '1982-07-16'   union all
         select 004, 'Iñacio', '1971-11-30')
    La requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select Numcli  as Num_Cli
         , NomCli  as Nom_Cli
         , DdnCli  as Date_Nais
         , age(now(), cast(DdnCli as timestamp))
    from t1     
    ;
    Donne le résultat suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    num_cli	nom_cli	date_nais	age
    1	Dupond	1961-02-20	58 years 10 mons 18 days 14:25:15.605782
    2	Durand	1985-05-11	34 years 7 mons 30 days 14:25:15.605782
    3	Martin	1982-07-16	37 years 5 mons 25 days 14:25:15.605782
    4	Iñacio	1971-11-30	48 years 1 mon 10 days 14:25:15.605782
    Si vous voulez apprendre le langage SQL, faites un tour ici : https://www.developpez.net/forums/d1...apprendre-sql/

  7. #7
    Membre régulier
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Entrepreneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Par défaut
    Re Mr escartegigue,

    BDD comme Base De Données
    Merci pour cette précision lol, bon j'étais à coté mais l'intention y était.

    Votre jeu d'essai m'a permis de comprendre le fonctionnement de la requête SQL, select permet d'aller chercher l'info et on lui dit ce que l'on veut en faire :
    select Numcli as Num_Cli
    Pour que ma formule fonctionne il faut que je sache comment mon programme sous prestashop nomme ou retient l'information de la date de naissance afin de pouvoir lui demander de la faire apparaitre dans mon tableau.
    Ce qui pourrait donner un truc du genre :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT SQL_CALC_FOUND_ROWS a.`id_order`, `reference`, `total_paid_tax_incl`, `payment`, a.`date_add` AS `date_add`, a. age(now( ), cast ( birthday as timestamp )
    , 
    		a.id_currency,
    		a.id_order AS id_pdf,
    		CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `customer`,
    		osl.`name` AS `osname`,
    		os.`color`,
    .....

    Est ce que je suis sur la bonne voie ?
    Merci à vous !
    Hervé.

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/09/2011, 18h24
  2. Importer valeur requete SQL dans une Requete
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/03/2006, 14h24
  3. Réponses: 1
    Dernier message: 25/10/2005, 12h18
  4. Recuperer un enregistrement de requete SQL dans une variable
    Par kleenex dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/09/2005, 15h59
  5. résultat d'une requete SQL dans un tableau en JSP
    Par Paradoxys dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/04/2005, 16h17

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