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

MySQL Discussion :

Recherche de panier


Sujet :

MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut Recherche de panier
    Bonsoir à tous,

    Pourriez vous m'aider pour la requête ci-dessous ?

    Pour faire simple, j'ai des paniers contenant des objets (A,B,C,D...)
    Je souhaite trouver les panier qui contiennent
    #1# A et/ou B en quantité de 10
    ET #2# C et/ou D en quantité de 5

    J'arrive à trouver sans problème la réponse aux requêtes #1# & #2# (cf. ci-dessous) mais pour coupler les deux de manière "optimisée" c'est plus compliquée

    `contenu_panier` -> table listant le contenu des paniers
    `contenu_panier`.`panier_id` > id des paniers
    `contenu_panier`.`objet_id` > id de l'objet
    `contenu_panier`.`quantite` > nombre d'objet n°`contenu_panier`.`objet_id dans le panier n°`contenu_panier`.`panier_id`

    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
    #1#
    SELECT
    	`contenu_panier`.`panier_id`,SUM(`contenu_panier`.`quantite`) AS somme
    FROM `contenu_panier`
    WHERE
    	`contenu_panier`.`objet_id` IN ('A','B')
    GROUP BY `contenu_panier`.`panier_id`
    HAVING somme <10
     
    #2#
    SELECT
    	`contenu_panier`.`panier_id`,SUM(`contenu_panier`.`quantite`) AS somme
    FROM `contenu_panier`
    WHERE
    	`contenu_panier`.`objet_id` IN ('C','D')
    GROUP BY `contenu_panier`.`panier_id`
    HAVING somme <5
    J'ai bien pensé à faire un truc comme ci-dessous #3# & #4# mais je ne pense pas que ce soit très optimisé cela risque de ce compliquer lorsque j'aurais des demandes comme :
    A et/ou B en quantité de 10
    ET C et/ou D en quantité de 5
    ET Z et/ou W en quantité de 2

    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
    34
    35
    #3#
    SELECT
    	S2.`panier_id`,SUM(S2.`quantite`) AS somme
    	FROM (
    		SELECT
    			`contenu_panier`.`panier_id`,SUM(`contenu_panier`.`quantite`) AS somme
    		FROM `contenu_panier`
    		WHERE
    			`contenu_panier`.`objet_id` IN ('A','B')
    		GROUP BY `contenu_panier`.`panier_id`
    		HAVING somme <10
    	) S1
    JOIN `contenu_panier` S2 ON S2.`panier_id` = S1.`panier_id`
    WHERE
    	S2.`objet_id` IN ('C','D')
    GROUP BY S2.`panier_id`
    HAVING S2.somme <5
     
    #4#
    SELECT
    	`contenu_panier`.`panier_id`,SUM(`contenu_panier`.`quantite`) AS somme
    FROM `contenu_panier`
    WHERE
    	`contenu_panier`.`objet_id` IN ('C','D')
    	AND `contenu_panier`.`panier_id` IN (
    		SELECT
    			`contenu_panier`.`panier_id`
    		FROM `contenu_panier`
    		WHERE
    			`contenu_panier`.`objet_id` IN ('A','B')
    		GROUP BY `contenu_panier`.`panier_id`
    		HAVING SUM(`contenu_panier`.`quantite`) <10
    	)
    GROUP BY `contenu_panier`.`panier_id`
    HAVING somme <5
    Voili, voulou ... Avez vous des conseils pour moi ? :'(

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut Nouvelle idée
    Voici une nouvelle idée ...
    Cependant elle ne m'affiche que les recettes contenant au moins A ou B & C & D, et pas les recettes contenant

    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
    #5#
    SELECT S0.`contenu_panier`,...
    FROM `contenu_panier` S0
    JOIN (
    	SELECT
    		`contenu_panier`.`panier_id`
    	FROM `contenu_panier`
    	WHERE
    		`contenu_panier`.`objet_id` IN (A,B)
    	GROUP BY `contenu_panier`.`panier_id`
    	HAVING SUM(`contenu_panier`.`quantite`) <10
    ) S1 ON S1.`panier_id` = S0.`panier_id`
    LEFT JOIN (
    	SELECT
    		`contenu_panier`.`panier_id`
    	FROM `contenu_panier`
    	WHERE
    		`contenu_panier`.`objet_id` IN (C,D)
    	GROUP BY `contenu_panier`.`panier_id`
    	HAVING SUM(`contenu_panier`.`quantite`) <5
    )
    GROUP BY S0.`recette_id`
    En résumé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #6#
    SELECT S0.`contenu_panier`,...
    FROM `contenu_panier` S0
    JOIN (#1#) S1 ON S1.`panier_id` = S0.`panier_id`
    LEFT JOIN (#1.1#) S2 ON S2.`panier_id` = S0.`panier_id`
    LEFT JOIN (#1.2#) S3 ON S3.`panier_id` = S0.`panier_id`
    ...
    GROUP BY S0.`recette_id`
    Vous en pensez quoi ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    Apreès 1/2 journée de travail supplémenaire, je commence à arriver à quelquechose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT *
    FROM (
    	#1#
    	UNION #2#
    ) S1
    GROUP BY S1.`panier_id`

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut rebel29270.

    Je voie que vous avez mis votre sujet à résolu. Sinon, avez-vous besoin d'aide ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    J'ai trouvé une solution ...

    Merci quand même..

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2010, 11h06
  2. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. [PRO*C] Recherche information
    Par Anonymous dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 04/04/2002, 17h53
  5. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09

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