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 :

Créer une requête qui renvoie un array dans l'array principal de la requête


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Créer une requête qui renvoie un array dans l'array principal de la requête
    Bonjour à vous !

    Je cherche à faire une chose en particulier, mais je sais même pas si c'est possible donc j'explique ma situation : je souhaite afficher des commentaires sur un sujet (jusque là facile) qui peuvent contenir plusieurs items venant d'une autre table.

    Pour mieux comprendre, voici le schéma de ma base de donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ------------------          --------------------
          users                       subjects
    ------------------          --------------------
    | ID | USERNAME  |          | ID |    TITLE    |
    | 4  |  Insow    |          | 9  | 'Subject 1' |
     
     
    -------------------------------------------
                   comments
    -------------------------------------------
    | ID | USER_ID | SUBJECT_ID |    TEXT     |
    | 1  |    4    |     9      | "J'ADORE !" |
    Donc à ce niveau il m'est très facile de récupérer les commentaires d'un sujet en une seule requête.

    C'est maintenant que les choses sérieuses commencent.
    J'ai des items dans ma base de donnée qui sont liés aux sujets mais pas aux commentaires/utilisateurs, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ----------------------------------
                 items
    ----------------------------------
    | ID |  ITEM_NAME   | SUBJECT_ID |
    | 4  | 'Mon item 1' |     9      |
    | 5  | 'Mon item 2' |     9      |
    | 8  | 'Mon item 3' |     9      |
    Sauf que les utilisateurs peuvent choisir plusieurs de ces items et j'aimerais les lier aux commentaires, pour cela j'ai créé une nouvelle table :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ---------------------
         users_items
    ---------------------
    | USER_ID | ITEM_ID |
    |    4    |   4     |
    |    4    |   5     |
    |    4    |   8     |

    Je possède 1 donnée de base : l'ID du sujet. Je souhaite récupérer tous les commentaires concernant ce sujet en particulier.
    Et ma question est : est-ce que je peux, en une seule requête, récupérer :

    1) Les commentaires des utilisateurs sur ce sujet (oui évidemment)
    2) Les différents items liés à 1 seul utilisateur que j'afficherai en-dessous des commentaires

    Pour avoir une idée claire, j'aimerais récupérer les données comme ceci (grosso-modo) :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    Array
    (
        [0] => Array
            (
                [USERNAME] => "Insow"
                [TEXT] => "J'ADORE !"
                [ITEMS] => Array
                    (
                        [0] => Array
                            (
                                [ID] => 4
                                [ITEM_NAME] => "Mon item 1"
                            )
     
                        [1] => Array
                            (
                                [ID] => 5
                                [ITEM_NAME] => "Mon item 2"
                            )
     
                        [2] => Array
                            (
                                [ID] => 8
                                [ITEM_NAME] => "Mon item 3"
                            )
     
                    )
     
            )
     
    )
    Comment on peut le voir, j'ai notamment la clé "ITEMS" qui contient un array contenant tous les items liés à l'utilisateur.


    Je me suis essayé à une requête que voici :

    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
     
    SELECT 		*
    FROM   		subjects_comments
     
    INNER JOIN 	users
    ON 		users.id = subjects_comments.user_id
     
    JOIN
     
    	(
    	SELECT		*
    	FROM		users_items
     
    	INNER JOIN	items
    	ON		items.id = users_items.item_id
    	)
     
    	derived
     
    ON	derived.user_id = subjects_comments.user_id
     
    WHERE	subjects_comments.subject_id = :subject_id


    Mais quoi qu'il en soit je n'arrive pas à obtenir une clé "items" qui contiendrait un array avec les différents items. Est-ce possible de faire cela ?

    Merci beaucoup par avance et désolé pour ce gros pavé, j'ai préféré bien expliquer la situation !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Salut,

    Je voulais juste demander une petite précision : tu dis :
    Sauf que les utilisateurs peuvent choisir plusieurs de ces items et j'aimerais les lier aux commentaires
    Alors pourquoi la table qui en résulte contient l'identifiant d'utilisateur et non pas l'identifiant du commentaire?

    @++

Discussions similaires

  1. Array dans un Array.. Dans un Array
    Par blinkman04 dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2014, 15h36
  2. [SP-2010] Créer une page qui s'associe directement dans une liste de liens
    Par thamak dans le forum SharePoint
    Réponses: 4
    Dernier message: 06/07/2011, 22h06
  3. créer une macro qui renvoie à une cellule vide
    Par cachou52fr dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 17/06/2011, 15h11
  4. Réponses: 8
    Dernier message: 24/03/2010, 15h01
  5. Réponses: 12
    Dernier message: 23/03/2006, 15h13

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