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 :

LIMIT sur une seule colonne


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Points : 61
    Points
    61
    Par défaut LIMIT sur une seule colonne
    Bonjour,

    je dispose de 3 tables:

    1) Produits (Exemple: café) --> contient des produits
    2) Id_caracteristique (Exemple: 2) --> sert à lier un produit avec une caractéristique via un identifiant produit et un identifiant caracteristique
    3) Caracteristique_name (Exemple: Poids) --> lie l'identifiant caracteristique avec un terme (exemple: poids, litre, longueur etc etc)


    Il y a une jointure entre la table 1 et 2 et entre la table 2 et 3

    Je souhaiterai pouvoir réaliser ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Café --- Poids --- 500 gr
    Café --- Tasse --- 10
    Café --- Hauteur --- 10cm
    Lait --- Litre --- 1

    Je souhaiterai limiter la colonne 1 (café, lait) à 2 résultats différents comme ci dessus.

    J'arrive à ceci avec le limite (LIMIT 0,2):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Café --- Poids --- 500 gr
    Café --- Tasse --- 10

    Je me doute qu'avec le limite ce n'est pas la bonne solution sachant qu'il sert à limiter des lignes. Est ce que quelqu'un pourrait m'aiguiller svp car je suis perdue ?

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Quel SGBD utilises-tu ?
    Quelle est la structure de tes tables ?
    Quelle est la requête que tu utilises ?
    Quel est le résultat que tu voudrais obtenir ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    J'utilise mysql (via phpmyadmin)

    Table product
    Table caracteristique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    id_caracterisitique
    id_product

    Table caracteristique_name
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    id_caracterisitique
    name

    Je souhaiterai récupérer les 3 premiers produits de la table product tout en sachant qu'un produit peut avoir plusieurs caractéristiques.


    Ma requête actuelle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT p.id_product, cn.name AS caracteristique_name, c . * 
    FROM t_product p
    INNER JOIN t_caracteristique c ON ( c.id_product = p.id_product ) 
    INNER JOIN t_caracteristique_name cn ON ( cn.id_caracteristique = c.id_caracteristique ) 
    WHERE p.active =1
    ORDER BY p.id_product ASC 
    LIMIT 0 , 3
    Ma requête me donne 3 lignes, or je souhaite les 3 premiers produits avec leurs caractéristiques associées ce qui devrait me faire 9 lignes car les 3 premiers produits de ma table ont 3 caractéristiques.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    appliquez le limit à votre table produit puis faites vos jointures.
    Tout ceci en passant par une sous-requête.

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Qui dit "premiers" dit ordre... Il faut donc commencer par définir un ordre dans les caractéristiques, pour savoir quelles sont les trois premières.

  6. #6
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Points : 61
    Points
    61
    Par défaut
    Merci pour vos réponses.

    Pourriez vous me montrer un exemple de requete qui fasse cela ?
    Car je ne m'y connais pas vraiment dans ce langage.

    Au sujet du tri sur les caractéristiques cela est fait via un champs se nommant "id" autoincrémenté lors d'insert dans la BDD (ORDER BY id ASC)

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/04/2007, 18h32
  2. wxListCtrl sur une seule colonne
    Par Neophile dans le forum wxWidgets
    Réponses: 1
    Dernier message: 12/03/2007, 11h05
  3. Afficher plusieur colonnes sur une seule colonne ?
    Par Interruption13h dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/02/2007, 17h57
  4. Figure sur une seule colonne
    Par Eusebius dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 09/07/2006, 00h46
  5. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 12h24

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