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

  1. #1
    Futur Membre du 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
    Points : 5
    Points
    5
    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
    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 378
    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 378
    Points : 19 055
    Points
    19 055
    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.

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

  3. #3
    Futur Membre du 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
    Points : 5
    Points
    5
    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