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 :

harry pilot, choisir un enregistrement au hasard


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut harry pilot, choisir un enregistrement au hasard
    Salut,
    je traine souvent sur ce site mais c'est la premiere fois que je vais sur le forum, preuve de mon desespoir
    Donc tout d'habord bonjour à tous !, je bosse pour une ssii tres connu dans une banque tres connu sur une base teradata avec un requeteur du nom de harry pilot (harry potter, pour les intimes)
    malheureusement impossible de faire du PL sql, et les fonction que je peux utiliser se restringnent à du sql pure.

    Disons que j'ai 2 tables

    -------------
    famille |
    -------------
    PK id_famille |
    ... |
    -------------

    -------------
    infos |
    -------------
    SK id_famille |
    SK id_client |
    metier |
    -------------

    La ou c'est drole,
    id_famille est le ID du chef de famille mais il est en meme temps un id client, il ne sont pas distingués.
    donc la PK id_famille peux se joindre a la clé id_famille(table infos) si je veux connaitre les infos des clients dont le chef de famille est le meme (chacun avec un id_client different sauf celui du chef famille dont le id_famille et le id_client sera le meme dans ce cas precis)
    et
    id_famille sur id_client si je veux les infos du chef de famille

    On me demande de trouve le metier du chef de famille, là, pas de probleme, je fait une jointure id_famille-> id_client, j'ai son metier

    Probleme, le metier dans certain cas du chef de famille n'est pas interessant, on veux celui d'un des membre de la famille au hasard, pourquoi au hasard ?
    car il peux y avoir plusieurs membres avec un metier qui nous interesses, et on en veux qu'un seul pour construire un echantillon niveau famille !
    Drole nan !

    Pour le moment ma jointure sur id_famille me renvoi tous les id_clients de la meme famille avec un group by id_famille et donc plusieurs metiers.
    Y a til un moyen de ne garder que le metier du premier de la liste de client d'une meme famille ?
    J'espere que c'est comprehensible,
    merci à l'avance de vos réponses.

    Ludo.

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Il y a un post similaire sur le forum et il se resoud apparement avec un group_concat mais c'est apparement specifique à mysql cette fonction ?
    ca renvoi lequel des enregistrement sur le groupe ?
    je veux pas les concatener, je veux en prendre une au hasard ou en fonction d un critere de priorité par exemple

    Ludo.

  3. #3
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    TU ne veux que la première ligne de ta requête contenant les métiers des membres d'une meme famille?...

    donc un truc équivalant à ROWNUM c'est ca mais en SQL pur?!

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Bas en fait je voudrais que ca fasse exactement comme un group_concat sauf qu'au lieu de concatener il ecrase l ancien enregistrement ou alors il en garde un selon un parametre.
    j'ai quelques fonctions utilisables mais rownum n'en fait pas partie ni group_concat

    Ludo.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 480
    Points
    28 480
    Par défaut
    ROWNUM n'est pas une fonction ANSI mais ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...) est conforme au standard et reconnue par Teradata depuis la version V2R5.0.
    Comme les autres fonctions d'analyse (Ordered Analytical Functions), elle ne peut pas être utilisée dans la clause WHERE mais est bien supportée par la clause QUALIFY (spécifique à Teradata).

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    merci pour l'info, je vais creuser ca.

    Ludo.

Discussions similaires

  1. Choisir un enregistrement au hasard
    Par gderenne dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/07/2007, 01h02
  2. Lire une enregistrement au hasard dans un fichier
    Par bonjour69 dans le forum Langage
    Réponses: 27
    Dernier message: 26/09/2006, 19h54
  3. [Conception] Choisir un pseudo au hasard dans une base de données
    Par ok07 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/08/2006, 18h05
  4. Choisir un élément au hasard dans un tableau
    Par ousunas dans le forum Langage
    Réponses: 1
    Dernier message: 25/02/2006, 20h50
  5. Choisir un fichier au hasard dans un répertoire
    Par M.Dlb dans le forum Linux
    Réponses: 2
    Dernier message: 09/12/2004, 23h41

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