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

UPDATE TO SELECT avec jointure.


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Par défaut UPDATE TO SELECT avec jointure.
    Bonjour a tous,

    j'aimerai transformer deux de mes requêtes. Vous allez sans doute pouvoir m'aider.

    La première : INSERT INTO SELECT en une requête UPDATE TO SELECT.

    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
    INSERT INTO ps_stock_available (
            id_product,
            id_product_attribute,
            id_shop,
            id_shop_group,
            quantity,
            depends_on_stock,
            out_of_stock)
     SELECT
            P.id_product,
            IFNULL(PA.id_product_attribute, 0) AS id_product_attribute,
            1 AS id_shop,
            0 AS id_shop_group,
            IFNULL(PA.quantity, P.quantity) AS quantity,
            0 AS depends_on_stock,
            0 AS out_of_stock
        FROM ps_product P
            LEFT JOIN ps_product_attribute PA ON PA.id_product = P.id_product
    Je vous colle ma requête modifié mais qui ne fonctionne pas vraiment.

    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
        UPDATE ps_stock_available PSSA
        LEFT JOIN (
     
            SELECT
                P.id_product,
                IFNULL(PA.id_product_attribute, 0) AS id_product_attribute,
                1 AS id_shop,
                0 AS id_shop_group,
                IFNULL(PA.quantity, P.quantity) AS quantity,
                0 AS depends_on_stock,
                0 AS out_of_stock
            FROM ps_product P
            LEFT JOIN ps_product_attribute PA ON PA.id_product = P.id_product
        ) AS P ON (PSSA.id_product = P.id_product)
        SET PSSA.quantity = P.quantity
    La deuxième : Un INSERT INTO SELECT mais sur la même table.
    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
     
    INSERT INTO ps_stock_available (
            id_product,
            id_product_attribute,
            id_shop,
            id_shop_group,
            quantity,
            depends_on_stock,
            out_of_stock)
    SELECT
            id_product,
            0 AS id_product_attribute,
            1 AS id_shop,
            0 AS id_shop_group,
            SUM(quantity) AS quantity,
            0 AS depends_on_stock,
            0 AS out_of_stock
     
        FROM ps_stock_available
            WHERE id_product_attribute != 0
     
        GROUP BY id_product
    Merci d'avance pour votre aide.

    OLIVIER.

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    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 917
    Par défaut
    Salut Shoner.

    Ne vous cassez pas trop la tête. Utilisez la requête replace qui fonctionne comme le insert.
    Sauf qu'en cas de duplication, elle fait un update.
    --> http://dev.mysql.com/doc/refman/5.7/en/replace.html

    Donc vous gardez la même structure de votre insert, mais vous remplacez le mot insert par replace.

    @+

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Par défaut
    Merci de ton aide Artemus24.

    Il est vrai que c'est plus simple.

    bonne journée.

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

Discussions similaires

  1. [HQL] Select avec jointure
    Par jeoff dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/11/2006, 12h12
  2. [c#]commande Select avec jointure de deux tables
    Par chorokari dans le forum Accès aux données
    Réponses: 6
    Dernier message: 18/10/2006, 14h47
  3. Delete + selection avec jointure
    Par kluh dans le forum Oracle
    Réponses: 4
    Dernier message: 15/11/2005, 10h44
  4. Problème performance SELECT avec jointure
    Par Netgamer dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/08/2005, 10h20
  5. Update dans SYBASE avec jointure sur 2 colonnes
    Par metheorn dans le forum Sybase
    Réponses: 2
    Dernier message: 24/06/2005, 16h51

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